Skip to content

Commit

Permalink
makes K8s vs Kubernetes type terminology consistent
Browse files Browse the repository at this point in the history
part of the motivation for this is that there are significant things in common between the two kinds of configs, making them closer in form is therefore ideal.
  • Loading branch information
dimitropoulos committed May 19, 2021
1 parent f7da6a2 commit c0df4df
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 35 deletions.
4 changes: 2 additions & 2 deletions packages/insomnia-inso/src/commands/generate-config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConversionResult, ConversionResultType, DeclarativeConfig, generate, generateFromString, KubernetesManifest } from 'openapi-2-kong';
import { ConversionResult, ConversionResultType, DeclarativeConfig, generate, generateFromString, K8sManifest } from 'openapi-2-kong';
import YAML from 'yaml';
import path from 'path';
import type { GlobalOptions } from '../get-options';
Expand Down Expand Up @@ -85,7 +85,7 @@ export const generateConfig = async (
return false;
}

const yamlDocs = result.documents.map((document: DeclarativeConfig | KubernetesManifest) => YAML.stringify(document));
const yamlDocs = result.documents.map((document: DeclarativeConfig | K8sManifest) => YAML.stringify(document));
// Join the YAML docs with "---" and strip any extra newlines surrounding them
const document = yamlDocs.join('\n---\n').replace(/\n+---\n+/g, '\n---\n');

Expand Down
8 changes: 4 additions & 4 deletions packages/openapi-2-kong/src/kubernetes/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import urlJoin from 'url-join';
import { flattenPluginDocuments, getPlugins, prioritizePlugins } from './plugins';
import { pathVariablesToWildcard, resolveUrlVariables } from './variables';
import { IndexIncrement } from '../types/k8splugins';
import { KubernetesConfig, KubernetesMethodConfig, K8sMetadata, K8sAnnotations, K8sIngressRule, K8sPath } from '../types/kubernetes-config';
import { K8sConfig, K8sMethodConfig, K8sMetadata, K8sAnnotations, K8sIngressRule, K8sPath } from '../types/kubernetes-config';
import { OpenApi3Spec, OA3Server } from '../types/openapi3';
import { KongForKubernetesResult } from '../types/outputs';

Expand All @@ -19,7 +19,7 @@ export function generateKongForKubernetesConfigFromSpec(api: OpenApi3Spec) {
const plugins = getPlugins(api);

// Initialize document collections
const ingressDocuments: KubernetesConfig[] = [];
const ingressDocuments: K8sConfig[] = [];
const methodsThatNeedKongIngressDocuments = new Set<HttpMethodType>();
let _iterator = 0;

Expand Down Expand Up @@ -47,7 +47,7 @@ export function generateKongForKubernetesConfigFromSpec(api: OpenApi3Spec) {
// Create metadata
const metadata = generateMetadata(api, annotations, increment, specName);
// Generate Kong ingress document for a server and path in the doc
const doc: KubernetesConfig = {
const doc: K8sConfig = {
apiVersion: 'extensions/v1beta1',
kind: 'Ingress',
metadata,
Expand Down Expand Up @@ -77,7 +77,7 @@ export function generateKongForKubernetesConfigFromSpec(api: OpenApi3Spec) {
return result;
}

function generateK8sMethodDocuments(method: HttpMethodType): KubernetesMethodConfig {
function generateK8sMethodDocuments(method: HttpMethodType): K8sMethodConfig {
return {
apiVersion: 'configuration.konghq.com/v1',
kind: 'KongIngress',
Expand Down
6 changes: 3 additions & 3 deletions packages/openapi-2-kong/src/kubernetes/plugin-helpers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { KubernetesPluginConfig } from '../types/kubernetes-config';
import { K8sPluginConfig } from '../types/kubernetes-config';
import { XKongPluginKeyAuth, XKongPluginUnknown } from '../types/openapi3';

export const pluginKeyAuth: XKongPluginKeyAuth = {
Expand All @@ -21,7 +21,7 @@ export const pluginDummy: XKongPluginUnknown<{ foo: 'bar' }> = {
},
};

export const pluginDocWithName = (name: string, pluginType: string): KubernetesPluginConfig => ({
export const pluginDocWithName = (name: string, pluginType: string): K8sPluginConfig => ({
apiVersion: 'configuration.konghq.com/v1',
kind: 'KongPlugin',
metadata: {
Expand All @@ -44,7 +44,7 @@ export const keyAuthPluginDoc = (suffix: string) => ({
plugin: 'key-auth',
});

export const dummyPluginDoc = (suffix: string): KubernetesPluginConfig => ({
export const dummyPluginDoc = (suffix: string): K8sPluginConfig => ({
apiVersion: 'configuration.konghq.com/v1',
config: {
foo: 'bar',
Expand Down
22 changes: 11 additions & 11 deletions packages/openapi-2-kong/src/kubernetes/plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import {
import { generateSecurityPlugins } from '../declarative-config/security-plugins';
import { DCPlugin } from '../types/declarative-config';
import { Plugins, IndexIncrement, ServerPlugin, PathPlugin, OperationPlugin } from '../types/k8splugins';
import { KubernetesPluginConfig } from '../types/kubernetes-config';
import { K8sPluginConfig } from '../types/kubernetes-config';
import { OpenApi3Spec, OA3Server, OA3Paths, OA3PathItem } from '../types/openapi3';
import { ValueOf } from 'type-fest';

export function flattenPluginDocuments(plugins: Plugins): KubernetesPluginConfig[] {
const all: KubernetesPluginConfig[] = [];
export function flattenPluginDocuments(plugins: Plugins): K8sPluginConfig[] {
const all: K8sPluginConfig[] = [];
const { global, servers, paths } = plugins;
all.push(...global);
servers.forEach(s => {
Expand Down Expand Up @@ -58,7 +58,7 @@ export function mapDcPluginsToK8sPlugins(
increment: IndexIncrement,
) {
return dcPlugins.map(dcPlugin => {
const k8sPlugin: KubernetesPluginConfig = {
const k8sPlugin: K8sPluginConfig = {
apiVersion: 'configuration.konghq.com/v1',
kind: 'KongPlugin',
metadata: {
Expand Down Expand Up @@ -149,12 +149,12 @@ export function generateK8sPluginConfig(
pluginNameSuffix: PluginNameSuffixKeys,
increment: IndexIncrement,
) {
const plugins: KubernetesPluginConfig[] = [];
const plugins: K8sPluginConfig[] = [];

for (const key of Object.keys(obj).filter(isPluginKey)) {
const pData = obj[key];
const name = pData.name || getPluginNameFromKey(key);
const p: KubernetesPluginConfig = {
const p: K8sPluginConfig = {
apiVersion: 'configuration.konghq.com/v1',
kind: 'KongPlugin',
metadata: {
Expand Down Expand Up @@ -197,13 +197,13 @@ export function normalizeOperationPlugins(operationPlugins: OperationPlugin[]) {
}

export function prioritizePlugins(
global: KubernetesPluginConfig[],
server: KubernetesPluginConfig[],
path: KubernetesPluginConfig[],
operation: KubernetesPluginConfig[],
global: K8sPluginConfig[],
server: K8sPluginConfig[],
path: K8sPluginConfig[],
operation: K8sPluginConfig[],
) {
// Order in priority: operation > path > server > global
const plugins: KubernetesPluginConfig[] = [...operation, ...path, ...server, ...global];
const plugins: K8sPluginConfig[] = [...operation, ...path, ...server, ...global];
// Select first of each type of plugin
return distinctByProperty(plugins, p => p.plugin);
}
10 changes: 5 additions & 5 deletions packages/openapi-2-kong/src/types/k8splugins.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import { HttpMethodType } from '../common';
import { KubernetesPluginConfig } from './kubernetes-config';
import { K8sPluginConfig } from './kubernetes-config';
import { OA3Server } from './openapi3';

export interface OperationPlugin {
method?: HttpMethodType | null;
plugins: KubernetesPluginConfig[];
plugins: K8sPluginConfig[];
}

export interface PathPlugin {
path: string;
plugins: KubernetesPluginConfig[];
plugins: K8sPluginConfig[];
operations: OperationPlugin[];
}

export interface ServerPlugin {
server: OA3Server;
plugins: KubernetesPluginConfig[];
plugins: K8sPluginConfig[];
}

export interface Plugins {
global: KubernetesPluginConfig[];
global: K8sPluginConfig[];
servers: ServerPlugin[];
paths: PathPlugin[];
}
Expand Down
19 changes: 11 additions & 8 deletions packages/openapi-2-kong/src/types/kubernetes-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ export interface K8sOverrideAnnotation {
'konghq.com/override'?: string;
}

export type K8sAnnotations = Record<string, string>
export type K8sAnnotations =
& K8sIngressClassAnnotation
& K8sPluginsAnnotation
& K8sOverrideAnnotation
& K8sPluginsAnnotation
& Record<string, string>
;

export interface K8sMetadata {
Expand Down Expand Up @@ -50,7 +51,7 @@ export interface K8sSpec {
rules: K8sIngressRule[];
}

export interface KubernetesMethodConfig {
export interface K8sMethodConfig {
apiVersion: 'configuration.konghq.com/v1';
kind: 'KongIngress';
metadata: {
Expand All @@ -61,7 +62,7 @@ export interface KubernetesMethodConfig {
};
}

export interface KubernetesPluginConfig {
export interface K8sPluginConfig {
apiVersion: 'configuration.konghq.com/v1';
kind: 'KongPlugin';
metadata: {
Expand All @@ -72,13 +73,15 @@ export interface KubernetesPluginConfig {
plugin: string;
}

export interface KubernetesConfig {
export interface K8sConfig {
apiVersion: 'extensions/v1beta1';
kind: 'Ingress';
metadata: K8sMetadata;
spec: K8sSpec;
}

export type KubernetesManifest = KubernetesConfig
| KubernetesPluginConfig
| KubernetesMethodConfig;
export type K8sManifest =
| K8sConfig
| K8sMethodConfig
| K8sPluginConfig
;
4 changes: 2 additions & 2 deletions packages/openapi-2-kong/src/types/outputs.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DeclarativeConfig } from './declarative-config';
import { KubernetesManifest } from './kubernetes-config';
import { K8sManifest } from './kubernetes-config';

export type ConversionResultType = 'kong-declarative-config' | 'kong-for-kubernetes';

Expand All @@ -19,7 +19,7 @@ export interface DeclarativeConfigResult {
export interface KongForKubernetesResult {
type: 'kong-for-kubernetes';
label: string;
documents: KubernetesManifest[];
documents: K8sManifest[];
warnings: Warnings[];
}

Expand Down

0 comments on commit c0df4df

Please sign in to comment.