@kyverno/backstage-plugin-policy-reporter-backend 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/config.schema.json +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/schema/openapi/generated/router.cjs.js +696 -6
- package/dist/schema/openapi/generated/router.cjs.js.map +1 -1
- package/dist/service/policyReporterService.cjs.js +45 -0
- package/dist/service/policyReporterService.cjs.js.map +1 -1
- package/dist/service/router.cjs.js +59 -0
- package/dist/service/router.cjs.js.map +1 -1
- package/package.json +16 -16
- package/config.d.ts +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs.js","sources":["../../../../src/schema/openapi/generated/router.ts"],"sourcesContent":["//\n\n// ******************************************************************\n// * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. *\n// ******************************************************************\nimport { createValidatedOpenApiRouterFromGeneratedEndpointMap } from '@backstage/backend-openapi-utils';\nimport { EndpointMap } from './apis';\n\nexport const spec = {\n openapi: '3.0.3',\n info: {\n title: 'policy-reporter',\n description: 'Backend API for the Backstage Policy Reporter plugin',\n version: '1.0.0',\n },\n paths: {\n '/namespaced-resources/results': {\n get: {\n summary: 'Get namespaced policy results',\n description:\n 'Retrieves policy results for a specific environment with optional filtering and pagination',\n operationId: 'getNamespacedResults',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'kinds',\n in: 'query',\n description: 'Filter by a list of Kubernetes resource kinds',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'resources',\n in: 'query',\n description: 'Filter by a list of resources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'policies',\n in: 'query',\n description: 'Filter by a list of policies',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'status',\n in: 'query',\n description: 'Filter by policy result status',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Status',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'severities',\n in: 'query',\n description: 'Filter by severity levels',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Severity',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'search',\n in: 'query',\n description: 'Search string to filter results',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'labels',\n in: 'query',\n description: 'Filter by label-value pairs',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'page',\n in: 'query',\n description: 'Requested list page number',\n schema: {\n type: 'integer',\n minimum: 1,\n default: 1,\n },\n },\n {\n name: 'offset',\n in: 'query',\n description: 'Number of results per page',\n schema: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 20,\n },\n },\n {\n name: 'direction',\n in: 'query',\n description: 'Sort direction for results',\n schema: {\n $ref: '#/components/schemas/Direction',\n },\n },\n ],\n responses: {\n '200': {\n description: 'Policy results retrieved successfully',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/ResultList',\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/sources': {\n get: {\n summary: 'Get sources',\n description: 'List of all Sources with namespace scoped results',\n operationId: 'getSources',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n ],\n responses: {\n '200': {\n description: 'List of sources',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/kinds': {\n get: {\n summary: 'Get kinds',\n description:\n 'List of all Kubernetes resource kinds with namespace scoped results',\n operationId: 'getKinds',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of kinds',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/categories': {\n get: {\n summary: 'Get categories',\n description: 'List of all Categories with namespace scoped results',\n operationId: 'getCategories',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of categories',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaces': {\n get: {\n summary: 'Get namespaces',\n description: 'Retrieves a list of namespaces from the policies',\n operationId: 'getNamespaces',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'policies',\n in: 'query',\n description: 'Filter by a list of policies',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of namespaces',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/policies': {\n get: {\n summary: 'Get policies with namespaced policy results',\n description: 'List of all Policies with namespace scoped results',\n operationId: 'getPolicies',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of policies',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - invalid entityRef or missing annotation',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n },\n components: {\n schemas: {\n Status: {\n type: 'string',\n enum: ['fail', 'skip', 'pass', 'warn', 'error', 'summary'],\n description: 'Policy result status',\n },\n Severity: {\n type: 'string',\n enum: ['unknown', 'info', 'low', 'medium', 'high', 'critical'],\n description: 'Policy result severity level',\n },\n Direction: {\n type: 'string',\n enum: ['asc', 'desc'],\n description: 'Sort direction',\n },\n Filter: {\n type: 'object',\n description: 'Filter options for policy results',\n properties: {\n sources: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of sources',\n },\n namespaces: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of namespaces',\n },\n kinds: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of kinds',\n },\n resources: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of resources',\n },\n categories: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of categories',\n },\n policies: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of policies',\n },\n status: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Status',\n },\n description: 'Filter by a list of status',\n },\n severities: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Severity',\n },\n description: 'Filter by a list of severities',\n },\n search: {\n type: 'string',\n description: 'Filter by search string',\n },\n labels: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by label-value pairs',\n },\n },\n },\n Pagination: {\n type: 'object',\n description: 'Pagination options for results',\n properties: {\n page: {\n type: 'integer',\n minimum: 1,\n default: 1,\n description: 'Requested list page number',\n },\n offset: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 20,\n description: 'Number of results per page',\n },\n sortBy: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Fields to sort by',\n },\n direction: {\n $ref: '#/components/schemas/Direction',\n description: 'Sort direction for results',\n },\n },\n },\n ResultList: {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/ListResult',\n },\n },\n count: {\n type: 'integer',\n description: 'Total number of results',\n },\n },\n },\n ListResult: {\n type: 'object',\n required: [\n 'id',\n 'namespace',\n 'kind',\n 'name',\n 'resourceId',\n 'message',\n 'policy',\n 'rule',\n 'status',\n 'severity',\n 'timestamp',\n 'properties',\n ],\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the result',\n },\n namespace: {\n type: 'string',\n description: 'Kubernetes namespace',\n },\n kind: {\n type: 'string',\n description: 'Kubernetes resource kind',\n },\n name: {\n type: 'string',\n description: 'Resource name',\n },\n resourceId: {\n type: 'string',\n description: 'Unique resource identifier',\n },\n message: {\n type: 'string',\n description: 'Policy result message',\n },\n policy: {\n type: 'string',\n description: 'Policy name',\n },\n rule: {\n type: 'string',\n description: 'Policy rule name',\n },\n status: {\n $ref: '#/components/schemas/Status',\n },\n severity: {\n $ref: '#/components/schemas/Severity',\n },\n timestamp: {\n type: 'integer',\n format: 'int64',\n description: 'Unix timestamp of the result',\n },\n properties: {\n type: 'object',\n additionalProperties: {\n type: 'string',\n },\n description: 'Additional key-value properties',\n },\n },\n },\n RequestError: {\n type: 'object',\n required: ['error'],\n properties: {\n error: {\n type: 'string',\n description: 'Error message',\n },\n },\n },\n },\n },\n} as const;\nexport const createOpenApiRouter = async (\n options?: Parameters<\n typeof createValidatedOpenApiRouterFromGeneratedEndpointMap\n >['1'],\n) =>\n createValidatedOpenApiRouterFromGeneratedEndpointMap<EndpointMap>(\n spec,\n options,\n );\n"],"names":["createValidatedOpenApiRouterFromGeneratedEndpointMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.cjs.js","sources":["../../../../src/schema/openapi/generated/router.ts"],"sourcesContent":["//\n\n// ******************************************************************\n// * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. *\n// ******************************************************************\nimport { createValidatedOpenApiRouterFromGeneratedEndpointMap } from '@backstage/backend-openapi-utils';\nimport { EndpointMap } from './apis';\n\nexport const spec = {\n openapi: '3.0.3',\n info: {\n title: 'policy-reporter',\n description: 'Backend API for the Backstage Policy Reporter plugin',\n version: '1.0.0',\n },\n paths: {\n '/namespaced-resources/results': {\n get: {\n summary: 'Get namespaced policy results',\n description:\n 'Retrieves policy results for a specific environment with optional filtering and pagination',\n operationId: 'getNamespacedResults',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'kinds',\n in: 'query',\n description: 'Filter by a list of Kubernetes resource kinds',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'resources',\n in: 'query',\n description: 'Filter by a list of resources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'policies',\n in: 'query',\n description: 'Filter by a list of policies',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'status',\n in: 'query',\n description: 'Filter by policy result status',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Status',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'severities',\n in: 'query',\n description: 'Filter by severity levels',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Severity',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'search',\n in: 'query',\n description: 'Search string to filter results',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'labels',\n in: 'query',\n description: 'Filter by label-value pairs',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'page',\n in: 'query',\n description: 'Requested list page number',\n schema: {\n type: 'integer',\n minimum: 1,\n default: 1,\n },\n },\n {\n name: 'offset',\n in: 'query',\n description: 'Number of results per page',\n schema: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 20,\n },\n },\n {\n name: 'direction',\n in: 'query',\n description: 'Sort direction for results',\n schema: {\n $ref: '#/components/schemas/Direction',\n },\n },\n ],\n responses: {\n '200': {\n description: 'Policy results retrieved successfully',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/ResultList',\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/sources': {\n get: {\n summary: 'Get sources',\n description: 'List of all Sources with namespace scoped results',\n operationId: 'getSources',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n ],\n responses: {\n '200': {\n description: 'List of sources',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/kinds': {\n get: {\n summary: 'Get kinds',\n description:\n 'List of all Kubernetes resource kinds with namespace scoped results',\n operationId: 'getKinds',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of kinds',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/categories': {\n get: {\n summary: 'Get categories',\n description: 'List of all Categories with namespace scoped results',\n operationId: 'getCategories',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of categories',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaces': {\n get: {\n summary: 'Get namespaces',\n description: 'Retrieves a list of namespaces from the policies',\n operationId: 'getNamespaces',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'policies',\n in: 'query',\n description: 'Filter by a list of policies',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of namespaces',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/namespaced-resources/policies': {\n get: {\n summary: 'Get policies with namespaced policy results',\n description: 'List of all Policies with namespace scoped results',\n operationId: 'getPolicies',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of policies',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/cluster-resources/sources': {\n get: {\n summary: 'Get cluster sources',\n description: 'List of all Sources with cluster scoped results',\n operationId: 'getClusterSources',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n ],\n responses: {\n '200': {\n description: 'List of sources',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/cluster-resources/kinds': {\n get: {\n summary: 'Get cluster kinds',\n description:\n 'List of all Kubernetes resource kinds with cluster scoped results',\n operationId: 'getClusterKinds',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'namespaces',\n in: 'query',\n description: 'Filter by a list of namespaces',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of kinds',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/cluster-resources/categories': {\n get: {\n summary: 'Get cluster categories',\n description: 'List of all Categories with cluster scoped results',\n operationId: 'getClusterCategories',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of categories',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/cluster-resources/policies': {\n get: {\n summary: 'Get cluster policies',\n description: 'List of all Policies with cluster scoped results',\n operationId: 'getClusterPolicies',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n ],\n responses: {\n '200': {\n description: 'List of policies',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n '/v1/cluster-resources/results': {\n get: {\n summary: 'Get cluster policy results',\n description:\n 'Retrieves policy results for a specific environment with optional filtering and pagination',\n operationId: 'getClusterResults',\n parameters: [\n {\n name: 'environment',\n in: 'query',\n required: true,\n description: 'The environment entity reference (URL encoded)',\n schema: {\n type: 'string',\n example: 'default/component/my-service',\n },\n },\n {\n name: 'sources',\n in: 'query',\n description: 'Filter by a list of sources',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'kinds',\n in: 'query',\n description: 'Filter by a list of Kubernetes resource kinds',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'categories',\n in: 'query',\n description: 'Filter by a list of categories',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'policies',\n in: 'query',\n description: 'Filter by a list of policies',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'status',\n in: 'query',\n description: 'Filter by policy result status',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Status',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'severities',\n in: 'query',\n description: 'Filter by severity levels',\n schema: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Severity',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'search',\n in: 'query',\n description: 'Search string to filter results',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'labels',\n in: 'query',\n description: 'Filter by label-value pairs',\n schema: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n style: 'form',\n explode: true,\n },\n {\n name: 'page',\n in: 'query',\n description: 'Requested list page number',\n schema: {\n type: 'integer',\n minimum: 1,\n default: 1,\n },\n },\n {\n name: 'offset',\n in: 'query',\n description: 'Number of results per page',\n schema: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 20,\n },\n },\n {\n name: 'direction',\n in: 'query',\n description: 'Sort direction for results',\n schema: {\n $ref: '#/components/schemas/Direction',\n },\n },\n ],\n responses: {\n '200': {\n description: 'Policy results retrieved successfully',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/ResultList',\n },\n },\n },\n },\n '400': {\n description:\n 'Bad request - environment entity missing required annotations',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '404': {\n description:\n 'Not Found - environment entity not found in the catalog',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '500': {\n description: 'Internal server error - failed to fetch policies',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '502': {\n description: 'Bad Gateway',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n '503': {\n description: 'Service Unavailable',\n content: {\n 'application/json': {\n schema: {\n $ref: '#/components/schemas/RequestError',\n },\n },\n },\n },\n },\n },\n },\n },\n components: {\n schemas: {\n Status: {\n type: 'string',\n enum: ['fail', 'skip', 'pass', 'warn', 'error', 'summary'],\n description: 'Policy result status',\n },\n Severity: {\n type: 'string',\n enum: ['unknown', 'info', 'low', 'medium', 'high', 'critical'],\n description: 'Policy result severity level',\n },\n Direction: {\n type: 'string',\n enum: ['asc', 'desc'],\n description: 'Sort direction',\n },\n Filter: {\n type: 'object',\n description: 'Filter options for policy results',\n properties: {\n sources: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of sources',\n },\n namespaces: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of namespaces',\n },\n kinds: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of kinds',\n },\n resources: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of resources',\n },\n categories: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of categories',\n },\n policies: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by a list of policies',\n },\n status: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Status',\n },\n description: 'Filter by a list of status',\n },\n severities: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/Severity',\n },\n description: 'Filter by a list of severities',\n },\n search: {\n type: 'string',\n description: 'Filter by search string',\n },\n labels: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Filter by label-value pairs',\n },\n },\n },\n Pagination: {\n type: 'object',\n description: 'Pagination options for results',\n properties: {\n page: {\n type: 'integer',\n minimum: 1,\n default: 1,\n description: 'Requested list page number',\n },\n offset: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 20,\n description: 'Number of results per page',\n },\n sortBy: {\n type: 'array',\n items: {\n type: 'string',\n },\n description: 'Fields to sort by',\n },\n direction: {\n $ref: '#/components/schemas/Direction',\n description: 'Sort direction for results',\n },\n },\n },\n ResultList: {\n type: 'object',\n required: ['items', 'count'],\n properties: {\n items: {\n type: 'array',\n items: {\n $ref: '#/components/schemas/ListResult',\n },\n },\n count: {\n type: 'integer',\n description: 'Total number of results',\n },\n },\n },\n ListResult: {\n type: 'object',\n required: [\n 'id',\n 'namespace',\n 'kind',\n 'name',\n 'resourceId',\n 'message',\n 'policy',\n 'rule',\n 'status',\n 'severity',\n 'timestamp',\n 'properties',\n ],\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the result',\n },\n namespace: {\n type: 'string',\n description: 'Kubernetes namespace',\n },\n kind: {\n type: 'string',\n description: 'Kubernetes resource kind',\n },\n name: {\n type: 'string',\n description: 'Resource name',\n },\n resourceId: {\n type: 'string',\n description: 'Unique resource identifier',\n },\n message: {\n type: 'string',\n description: 'Policy result message',\n },\n policy: {\n type: 'string',\n description: 'Policy name',\n },\n rule: {\n type: 'string',\n description: 'Policy rule name',\n },\n status: {\n $ref: '#/components/schemas/Status',\n },\n severity: {\n $ref: '#/components/schemas/Severity',\n },\n timestamp: {\n type: 'integer',\n format: 'int64',\n description: 'Unix timestamp of the result',\n },\n properties: {\n type: 'object',\n additionalProperties: {\n type: 'string',\n },\n description: 'Additional key-value properties',\n },\n },\n },\n RequestError: {\n type: 'object',\n required: ['error'],\n properties: {\n error: {\n type: 'string',\n description: 'Error message',\n },\n },\n },\n },\n },\n} as const;\nexport const createOpenApiRouter = async (\n options?: Parameters<\n typeof createValidatedOpenApiRouterFromGeneratedEndpointMap\n >['1'],\n) =>\n createValidatedOpenApiRouterFromGeneratedEndpointMap<EndpointMap>(\n spec,\n options,\n );\n"],"names":["createValidatedOpenApiRouterFromGeneratedEndpointMap"],"mappings":"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"}
|
|
@@ -35,6 +35,15 @@ class PolicyReporterService {
|
|
|
35
35
|
}
|
|
36
36
|
deps;
|
|
37
37
|
defaultHeaders;
|
|
38
|
+
async getClusterResourceResults(options) {
|
|
39
|
+
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
40
|
+
return this.request({
|
|
41
|
+
baseUrl,
|
|
42
|
+
uriTemplate: "v1/cluster-resources/results{?sources*,kinds*,categories*,policies*,status*,severities*,search,labels*,page,offset,direction}",
|
|
43
|
+
query: { ...options.query },
|
|
44
|
+
operation: "fetch cluster resource results"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
38
47
|
async getNamespacedResourceResults(options) {
|
|
39
48
|
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
40
49
|
return this.request({
|
|
@@ -89,6 +98,42 @@ class PolicyReporterService {
|
|
|
89
98
|
operation: "fetch policies"
|
|
90
99
|
});
|
|
91
100
|
}
|
|
101
|
+
async getClusterSources(options) {
|
|
102
|
+
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
103
|
+
return this.request({
|
|
104
|
+
baseUrl,
|
|
105
|
+
uriTemplate: "v1/cluster-resources/sources",
|
|
106
|
+
query: {},
|
|
107
|
+
operation: "fetch cluster sources"
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async getClusterKinds(options) {
|
|
111
|
+
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
112
|
+
return this.request({
|
|
113
|
+
baseUrl,
|
|
114
|
+
uriTemplate: "v1/cluster-resources/kinds{?sources*,namespaces*}",
|
|
115
|
+
query: options.query,
|
|
116
|
+
operation: "fetch cluster kinds"
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
async getClusterCategories(options) {
|
|
120
|
+
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
121
|
+
return this.request({
|
|
122
|
+
baseUrl,
|
|
123
|
+
uriTemplate: "v1/cluster-resources/categories{?sources*}",
|
|
124
|
+
query: options.query,
|
|
125
|
+
operation: "fetch cluster categories"
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
async getClusterPolicies(options) {
|
|
129
|
+
const baseUrl = await this.getBaseUrl(options.entityRef);
|
|
130
|
+
return this.request({
|
|
131
|
+
baseUrl,
|
|
132
|
+
uriTemplate: "v1/cluster-resources/policies{?sources*,categories*}",
|
|
133
|
+
query: options.query,
|
|
134
|
+
operation: "fetch cluster policies"
|
|
135
|
+
});
|
|
136
|
+
}
|
|
92
137
|
async request(options) {
|
|
93
138
|
const uri = parser__namespace.parse(options.uriTemplate).expand(options.query);
|
|
94
139
|
const url = `${this.ensureTrailingSlash(options.baseUrl)}${uri}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policyReporterService.cjs.js","sources":["../../src/service/policyReporterService.ts"],"sourcesContent":["import {\n AuthService,\n LoggerService,\n RootConfigService,\n} from '@backstage/backend-plugin-api';\nimport * as parser from 'uri-template';\nimport {\n Filter,\n Pagination,\n ResultList,\n} from '../schema/openapi/generated/models';\nimport { CatalogService } from '@backstage/plugin-catalog-node';\nimport {\n ForwardedError,\n InputError,\n NotFoundError,\n ServiceUnavailableError,\n} from '@backstage/errors';\nimport { KYVERNO_ENDPOINT_ANNOTATION } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { JsonObject } from '@backstage/types';\n\nexport interface PolicyReporterApi {\n getNamespacedResourceResults(options: {\n entityRef: string;\n query: Filter & Pagination;\n }): Promise<ResultList>;\n\n getNamespaces(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories' | 'policies'>;\n }): Promise<string[]>;\n\n getSources(options: { entityRef: string }): Promise<string[]>;\n\n getKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'kinds'>;\n }): Promise<string[]>;\n\n getCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]>;\n\n getPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces' | 'categories'>;\n }): Promise<string[]>;\n}\n\nexport class PolicyReporterService implements PolicyReporterApi {\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(\n private readonly deps: {\n logger: LoggerService;\n catalogService: CatalogService;\n authService: AuthService;\n configService: RootConfigService;\n },\n ) {\n const headers = this.deps.configService\n .getOptionalConfig('policyReporter.requestHeaders')\n ?.get<JsonObject>();\n\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n ...headers,\n };\n }\n\n async getNamespacedResourceResults(options: {\n entityRef: string;\n query: Filter & Pagination;\n }): Promise<ResultList> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<ResultList>({\n baseUrl,\n uriTemplate:\n 'v1/namespaced-resources/results{?sources*,namespaces*,kinds*,resources*,categories*,policies*,status*,severities*,search,labels*,page,offset,direction}',\n query: { ...options.query },\n operation: 'fetch namespaced resource results',\n });\n }\n\n async getNamespaces(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories' | 'policies'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaces{?sources*,categories*,policies*}',\n query: { ...options.query },\n operation: 'fetch namespaces',\n });\n }\n\n async getSources(options: { entityRef: string }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/sources',\n query: {},\n operation: 'fetch sources',\n });\n }\n\n async getKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/kinds{?sources*,namespaces*}',\n query: options.query,\n operation: 'fetch kinds',\n });\n }\n\n async getCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/categories{?sources*,namespaces*}',\n query: options.query,\n operation: 'fetch categories',\n });\n }\n\n async getPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces' | 'categories'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate:\n 'v1/namespaced-resources/policies{?sources*,namespaces*,categories*}',\n query: options.query,\n operation: 'fetch policies',\n });\n }\n\n private async request<T>(options: {\n baseUrl: string;\n uriTemplate: string;\n query: Record<string, unknown>;\n operation: string;\n }): Promise<T> {\n const uri = parser.parse(options.uriTemplate).expand(options.query);\n const url = `${this.ensureTrailingSlash(options.baseUrl)}${uri}`;\n\n let response: Response;\n\n try {\n response = await fetch(url, {\n method: 'GET',\n headers: {\n ...this.defaultHeaders,\n },\n });\n } catch (error) {\n this.deps.logger.error(`Failed to ${options.operation} from ${url}`);\n throw new ServiceUnavailableError(\n `Failed to ${options.operation}`,\n error,\n );\n }\n\n if (!response.ok) {\n this.deps.logger.warn(\n `Policy Reporter returned ${response.status} ${response.statusText} for ${url}`,\n );\n\n throw new ForwardedError(\n `Failed to ${options.operation}: ${response.status} ${response.statusText}`,\n new Error(response.statusText),\n );\n }\n\n return (await response.json()) as T;\n }\n\n private ensureTrailingSlash(url: string): string {\n return url.endsWith('/') ? url : `${url}/`;\n }\n\n private async getBaseUrl(entityRef: string): Promise<string> {\n const credentials = await this.deps.authService.getOwnServiceCredentials();\n\n const entity = await this.deps.catalogService.getEntityByRef(entityRef, {\n credentials,\n });\n\n if (!entity) {\n throw new NotFoundError('Entity not found');\n }\n\n const baseUrl = entity.metadata.annotations?.[KYVERNO_ENDPOINT_ANNOTATION];\n\n if (!baseUrl) {\n throw new InputError(\n `Entity missing '${KYVERNO_ENDPOINT_ANNOTATION}' annotation`,\n );\n }\n\n return baseUrl;\n }\n}\n"],"names":["parser","ServiceUnavailableError","ForwardedError","NotFoundError","KYVERNO_ENDPOINT_ANNOTATION","InputError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policyReporterService.cjs.js","sources":["../../src/service/policyReporterService.ts"],"sourcesContent":["import {\n AuthService,\n LoggerService,\n RootConfigService,\n} from '@backstage/backend-plugin-api';\nimport * as parser from 'uri-template';\nimport {\n Filter,\n Pagination,\n ResultList,\n} from '../schema/openapi/generated/models';\nimport { CatalogService } from '@backstage/plugin-catalog-node';\nimport {\n ForwardedError,\n InputError,\n NotFoundError,\n ServiceUnavailableError,\n} from '@backstage/errors';\nimport { KYVERNO_ENDPOINT_ANNOTATION } from '@kyverno/backstage-plugin-policy-reporter-common';\nimport { JsonObject } from '@backstage/types';\n\nexport interface PolicyReporterApi {\n getNamespacedResourceResults(options: {\n entityRef: string;\n query: Filter & Pagination;\n }): Promise<ResultList>;\n\n getClusterResourceResults(options: {\n entityRef: string;\n query: Pick<\n Filter,\n | 'sources'\n | 'kinds'\n | 'categories'\n | 'policies'\n | 'status'\n | 'severities'\n | 'search'\n | 'labels'\n > &\n Pagination;\n }): Promise<ResultList>;\n\n getNamespaces(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories' | 'policies'>;\n }): Promise<string[]>;\n\n getSources(options: { entityRef: string }): Promise<string[]>;\n\n getKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'kinds'>;\n }): Promise<string[]>;\n\n getCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]>;\n\n getPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces' | 'categories'>;\n }): Promise<string[]>;\n\n getClusterSources(options: { entityRef: string }): Promise<string[]>;\n\n getClusterKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]>;\n\n getClusterCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources'>;\n }): Promise<string[]>;\n\n getClusterPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories'>;\n }): Promise<string[]>;\n}\n\nexport class PolicyReporterService implements PolicyReporterApi {\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(\n private readonly deps: {\n logger: LoggerService;\n catalogService: CatalogService;\n authService: AuthService;\n configService: RootConfigService;\n },\n ) {\n const headers = this.deps.configService\n .getOptionalConfig('policyReporter.requestHeaders')\n ?.get<JsonObject>();\n\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n ...headers,\n };\n }\n\n async getClusterResourceResults(options: {\n entityRef: string;\n query: Pick<\n Filter,\n | 'sources'\n | 'kinds'\n | 'categories'\n | 'policies'\n | 'status'\n | 'severities'\n | 'search'\n | 'labels'\n > &\n Pagination;\n }): Promise<ResultList> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<ResultList>({\n baseUrl,\n uriTemplate:\n 'v1/cluster-resources/results{?sources*,kinds*,categories*,policies*,status*,severities*,search,labels*,page,offset,direction}',\n query: { ...options.query },\n operation: 'fetch cluster resource results',\n });\n }\n\n async getNamespacedResourceResults(options: {\n entityRef: string;\n query: Filter & Pagination;\n }): Promise<ResultList> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<ResultList>({\n baseUrl,\n uriTemplate:\n 'v1/namespaced-resources/results{?sources*,namespaces*,kinds*,resources*,categories*,policies*,status*,severities*,search,labels*,page,offset,direction}',\n query: { ...options.query },\n operation: 'fetch namespaced resource results',\n });\n }\n\n async getNamespaces(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories' | 'policies'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaces{?sources*,categories*,policies*}',\n query: { ...options.query },\n operation: 'fetch namespaces',\n });\n }\n\n async getSources(options: { entityRef: string }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/sources',\n query: {},\n operation: 'fetch sources',\n });\n }\n\n async getKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/kinds{?sources*,namespaces*}',\n query: options.query,\n operation: 'fetch kinds',\n });\n }\n\n async getCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/namespaced-resources/categories{?sources*,namespaces*}',\n query: options.query,\n operation: 'fetch categories',\n });\n }\n\n async getPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces' | 'categories'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate:\n 'v1/namespaced-resources/policies{?sources*,namespaces*,categories*}',\n query: options.query,\n operation: 'fetch policies',\n });\n }\n\n async getClusterSources(options: { entityRef: string }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/cluster-resources/sources',\n query: {},\n operation: 'fetch cluster sources',\n });\n }\n\n async getClusterKinds(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'namespaces'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/cluster-resources/kinds{?sources*,namespaces*}',\n query: options.query,\n operation: 'fetch cluster kinds',\n });\n }\n\n async getClusterCategories(options: {\n entityRef: string;\n query: Pick<Filter, 'sources'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/cluster-resources/categories{?sources*}',\n query: options.query,\n operation: 'fetch cluster categories',\n });\n }\n\n async getClusterPolicies(options: {\n entityRef: string;\n query: Pick<Filter, 'sources' | 'categories'>;\n }): Promise<string[]> {\n const baseUrl = await this.getBaseUrl(options.entityRef);\n\n return this.request<string[]>({\n baseUrl,\n uriTemplate: 'v1/cluster-resources/policies{?sources*,categories*}',\n query: options.query,\n operation: 'fetch cluster policies',\n });\n }\n\n private async request<T>(options: {\n baseUrl: string;\n uriTemplate: string;\n query: Record<string, unknown>;\n operation: string;\n }): Promise<T> {\n const uri = parser.parse(options.uriTemplate).expand(options.query);\n const url = `${this.ensureTrailingSlash(options.baseUrl)}${uri}`;\n\n let response: Response;\n\n try {\n response = await fetch(url, {\n method: 'GET',\n headers: {\n ...this.defaultHeaders,\n },\n });\n } catch (error) {\n this.deps.logger.error(`Failed to ${options.operation} from ${url}`);\n throw new ServiceUnavailableError(\n `Failed to ${options.operation}`,\n error,\n );\n }\n\n if (!response.ok) {\n this.deps.logger.warn(\n `Policy Reporter returned ${response.status} ${response.statusText} for ${url}`,\n );\n\n throw new ForwardedError(\n `Failed to ${options.operation}: ${response.status} ${response.statusText}`,\n new Error(response.statusText),\n );\n }\n\n return (await response.json()) as T;\n }\n\n private ensureTrailingSlash(url: string): string {\n return url.endsWith('/') ? url : `${url}/`;\n }\n\n private async getBaseUrl(entityRef: string): Promise<string> {\n const credentials = await this.deps.authService.getOwnServiceCredentials();\n\n const entity = await this.deps.catalogService.getEntityByRef(entityRef, {\n credentials,\n });\n\n if (!entity) {\n throw new NotFoundError('Entity not found');\n }\n\n const baseUrl = entity.metadata.annotations?.[KYVERNO_ENDPOINT_ANNOTATION];\n\n if (!baseUrl) {\n throw new InputError(\n `Entity missing '${KYVERNO_ENDPOINT_ANNOTATION}' annotation`,\n );\n }\n\n return baseUrl;\n }\n}\n"],"names":["parser","ServiceUnavailableError","ForwardedError","NotFoundError","KYVERNO_ENDPOINT_ANNOTATION","InputError"],"mappings":"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"}
|
|
@@ -40,6 +40,18 @@ async function createRouter(options) {
|
|
|
40
40
|
return handlePolicyReporterError(error, response);
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
|
+
router$1.get("/v1/cluster-resources/results", async (request, response) => {
|
|
44
|
+
try {
|
|
45
|
+
const { environment, ...query } = request.query;
|
|
46
|
+
const result = await policyReporterService.getClusterResourceResults({
|
|
47
|
+
entityRef: decodeURIComponent(environment),
|
|
48
|
+
query
|
|
49
|
+
});
|
|
50
|
+
return response.status(200).json(result);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
return handlePolicyReporterError(error, response);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
43
55
|
router$1.get("/v1/namespaces", async (request, response) => {
|
|
44
56
|
try {
|
|
45
57
|
const { environment, ...query } = request.query;
|
|
@@ -102,6 +114,53 @@ async function createRouter(options) {
|
|
|
102
114
|
return handlePolicyReporterError(error, response);
|
|
103
115
|
}
|
|
104
116
|
});
|
|
117
|
+
router$1.get("/v1/cluster-resources/sources", async (request, response) => {
|
|
118
|
+
try {
|
|
119
|
+
const { environment } = request.query;
|
|
120
|
+
const result = await policyReporterService.getClusterSources({
|
|
121
|
+
entityRef: decodeURIComponent(environment)
|
|
122
|
+
});
|
|
123
|
+
return response.status(200).json(result);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
return handlePolicyReporterError(error, response);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
router$1.get("/v1/cluster-resources/kinds", async (request, response) => {
|
|
129
|
+
try {
|
|
130
|
+
const { environment, ...query } = request.query;
|
|
131
|
+
const result = await policyReporterService.getClusterKinds({
|
|
132
|
+
entityRef: decodeURIComponent(environment),
|
|
133
|
+
query
|
|
134
|
+
});
|
|
135
|
+
return response.status(200).json(result);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
return handlePolicyReporterError(error, response);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
router$1.get("/v1/cluster-resources/categories", async (request, response) => {
|
|
141
|
+
try {
|
|
142
|
+
const { environment, ...query } = request.query;
|
|
143
|
+
const result = await policyReporterService.getClusterCategories({
|
|
144
|
+
entityRef: decodeURIComponent(environment),
|
|
145
|
+
query
|
|
146
|
+
});
|
|
147
|
+
return response.status(200).json(result);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
return handlePolicyReporterError(error, response);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
router$1.get("/v1/cluster-resources/policies", async (request, response) => {
|
|
153
|
+
try {
|
|
154
|
+
const { environment, ...query } = request.query;
|
|
155
|
+
const result = await policyReporterService.getClusterPolicies({
|
|
156
|
+
entityRef: decodeURIComponent(environment),
|
|
157
|
+
query
|
|
158
|
+
});
|
|
159
|
+
return response.status(200).json(result);
|
|
160
|
+
} catch (error) {
|
|
161
|
+
return handlePolicyReporterError(error, response);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
105
164
|
const middleware = rootHttpRouter.MiddlewareFactory.create({ logger, config });
|
|
106
165
|
router$1.use(middleware.error());
|
|
107
166
|
return router$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import { RootConfigService } from '@backstage/backend-plugin-api';\nimport { LoggerService } from '@backstage/backend-plugin-api';\nimport express from 'express';\nimport { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';\nimport { createOpenApiRouter } from '../schema/openapi';\nimport { PolicyReporterApi } from './policyReporterService';\nimport {\n ForwardedError,\n InputError,\n NotFoundError,\n ServiceUnavailableError,\n} from '@backstage/errors';\n\nexport interface RouterOptions {\n logger: LoggerService;\n config: RootConfigService;\n policyReporterService: PolicyReporterApi;\n}\n\nfunction handlePolicyReporterError(\n error: unknown,\n response: express.Response,\n): express.Response {\n if (error instanceof NotFoundError) {\n return response.status(404).json({ error: error.message });\n }\n\n if (error instanceof InputError) {\n return response.status(400).json({ error: error.message });\n }\n\n if (error instanceof ServiceUnavailableError) {\n return response.status(503).json({ error: error.message });\n }\n\n if (error instanceof ForwardedError) {\n return response.status(502).json({ error: error.message });\n }\n\n return response.status(500).json({ error: 'Unknown error' });\n}\n\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { logger, config, policyReporterService } = options;\n\n const router = await createOpenApiRouter();\n router.use(express.json());\n\n router.get('/namespaced-resources/results', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getNamespacedResourceResults({\n entityRef: decodeURIComponent(environment),\n query: query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaces', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getNamespaces({\n entityRef: decodeURIComponent(environment),\n query: query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaced-resources/sources', async (request, response) => {\n try {\n const { environment } = request.query;\n\n const result = await policyReporterService.getSources({\n entityRef: decodeURIComponent(environment),\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaced-resources/kinds', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getKinds({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get(\n '/v1/namespaced-resources/categories',\n async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getCategories({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n },\n );\n\n router.get('/v1/namespaced-resources/policies', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getPolicies({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n const middleware = MiddlewareFactory.create({ logger, config });\n\n router.use(middleware.error());\n return router;\n}\n"],"names":["NotFoundError","InputError","ServiceUnavailableError","ForwardedError","router","createOpenApiRouter","express","MiddlewareFactory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import { RootConfigService } from '@backstage/backend-plugin-api';\nimport { LoggerService } from '@backstage/backend-plugin-api';\nimport express from 'express';\nimport { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';\nimport { createOpenApiRouter } from '../schema/openapi';\nimport { PolicyReporterApi } from './policyReporterService';\nimport {\n ForwardedError,\n InputError,\n NotFoundError,\n ServiceUnavailableError,\n} from '@backstage/errors';\n\nexport interface RouterOptions {\n logger: LoggerService;\n config: RootConfigService;\n policyReporterService: PolicyReporterApi;\n}\n\nfunction handlePolicyReporterError(\n error: unknown,\n response: express.Response,\n): express.Response {\n if (error instanceof NotFoundError) {\n return response.status(404).json({ error: error.message });\n }\n\n if (error instanceof InputError) {\n return response.status(400).json({ error: error.message });\n }\n\n if (error instanceof ServiceUnavailableError) {\n return response.status(503).json({ error: error.message });\n }\n\n if (error instanceof ForwardedError) {\n return response.status(502).json({ error: error.message });\n }\n\n return response.status(500).json({ error: 'Unknown error' });\n}\n\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { logger, config, policyReporterService } = options;\n\n const router = await createOpenApiRouter();\n router.use(express.json());\n\n router.get('/namespaced-resources/results', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getNamespacedResourceResults({\n entityRef: decodeURIComponent(environment),\n query: query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/cluster-resources/results', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getClusterResourceResults({\n entityRef: decodeURIComponent(environment),\n query: query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaces', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getNamespaces({\n entityRef: decodeURIComponent(environment),\n query: query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaced-resources/sources', async (request, response) => {\n try {\n const { environment } = request.query;\n\n const result = await policyReporterService.getSources({\n entityRef: decodeURIComponent(environment),\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/namespaced-resources/kinds', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getKinds({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get(\n '/v1/namespaced-resources/categories',\n async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getCategories({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n },\n );\n\n router.get('/v1/namespaced-resources/policies', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getPolicies({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/cluster-resources/sources', async (request, response) => {\n try {\n const { environment } = request.query;\n\n const result = await policyReporterService.getClusterSources({\n entityRef: decodeURIComponent(environment),\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/cluster-resources/kinds', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getClusterKinds({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/cluster-resources/categories', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getClusterCategories({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n router.get('/v1/cluster-resources/policies', async (request, response) => {\n try {\n const { environment, ...query } = request.query;\n\n const result = await policyReporterService.getClusterPolicies({\n entityRef: decodeURIComponent(environment),\n query,\n });\n\n return response.status(200).json(result);\n } catch (error) {\n return handlePolicyReporterError(error, response);\n }\n });\n\n const middleware = MiddlewareFactory.create({ logger, config });\n\n router.use(middleware.error());\n return router;\n}\n"],"names":["NotFoundError","InputError","ServiceUnavailableError","ForwardedError","router","createOpenApiRouter","express","MiddlewareFactory"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kyverno/backstage-plugin-policy-reporter-backend",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -43,15 +43,15 @@
|
|
|
43
43
|
"generate": "backstage-repo-tools package schema openapi generate --server --client-package plugins/policy-reporter-common"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@backstage/backend-defaults": "^0.
|
|
47
|
-
"@backstage/backend-openapi-utils": "^0.
|
|
48
|
-
"@backstage/backend-plugin-api": "^1.
|
|
49
|
-
"@backstage/config": "^1.3.
|
|
46
|
+
"@backstage/backend-defaults": "^0.18.0",
|
|
47
|
+
"@backstage/backend-openapi-utils": "^0.7.2",
|
|
48
|
+
"@backstage/backend-plugin-api": "^1.10.1",
|
|
49
|
+
"@backstage/config": "^1.3.9",
|
|
50
50
|
"@backstage/errors": "^1.3.1",
|
|
51
|
-
"@backstage/plugin-catalog-node": "^2.2.
|
|
52
|
-
"@backstage/repo-tools": "^0.
|
|
51
|
+
"@backstage/plugin-catalog-node": "^2.2.5",
|
|
52
|
+
"@backstage/repo-tools": "^0.19.1",
|
|
53
53
|
"@backstage/types": "^1.2.2",
|
|
54
|
-
"@kyverno/backstage-plugin-policy-reporter-common": "^2.
|
|
54
|
+
"@kyverno/backstage-plugin-policy-reporter-common": "^2.6.0",
|
|
55
55
|
"@types/express": "*",
|
|
56
56
|
"express": "^4.17.1",
|
|
57
57
|
"express-promise-router": "^4.1.0",
|
|
@@ -60,21 +60,21 @@
|
|
|
60
60
|
"yn": "^4.0.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@backstage/backend-test-utils": "^1.11.
|
|
64
|
-
"@backstage/catalog-model": "^1.
|
|
65
|
-
"@backstage/cli": "^0.36.
|
|
66
|
-
"@backstage/plugin-auth-backend": "^0.
|
|
67
|
-
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.
|
|
68
|
-
"@backstage/plugin-catalog-backend": "^
|
|
63
|
+
"@backstage/backend-test-utils": "^1.11.7",
|
|
64
|
+
"@backstage/catalog-model": "^1.10.1",
|
|
65
|
+
"@backstage/cli": "^0.36.6",
|
|
66
|
+
"@backstage/plugin-auth-backend": "^0.30.1",
|
|
67
|
+
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.23",
|
|
68
|
+
"@backstage/plugin-catalog-backend": "^4.0.0",
|
|
69
69
|
"@types/supertest": "^2.0.12",
|
|
70
70
|
"better-sqlite3": "^9.0.0",
|
|
71
71
|
"msw": "^1.0.0",
|
|
72
72
|
"supertest": "^6.2.4"
|
|
73
73
|
},
|
|
74
|
-
"configSchema": "config.
|
|
74
|
+
"configSchema": "config.schema.json",
|
|
75
75
|
"files": [
|
|
76
76
|
"dist",
|
|
77
|
-
"config.
|
|
77
|
+
"config.schema.json"
|
|
78
78
|
],
|
|
79
79
|
"typesVersions": {
|
|
80
80
|
"*": {
|