Skip to content

Commit

Permalink
add missing trigger types and update the optional fields
Browse files Browse the repository at this point in the history
  • Loading branch information
karthik committed Jan 21, 2021
1 parent 977ba50 commit 64651a1
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 11 deletions.
Expand Up @@ -3,7 +3,7 @@ import * as _ from 'lodash';
import { useTranslation } from 'react-i18next';
import { ResourceLink } from '@console/internal/components/utils';
import { referenceForModel } from '@console/internal/module/k8s';
import { TriggerTemplateModel } from '../../../models';
import { TriggerModel, TriggerTemplateModel } from '../../../models';
import { EventListenerKindTrigger } from '../resource-types';
import DynamicResourceLinkList, {
ResourceModelLink,
Expand All @@ -23,15 +23,18 @@ const EventListenerTriggers: React.FC<EventListenerTriggersProps> = ({ namespace
<dt>{t('pipelines-plugin~Triggers')}</dt>
<dd>
{triggers.map((trigger) => {
const triggerTemplateKind = referenceForModel(TriggerTemplateModel);
const triggerTemplateName = trigger.template.name;
const hasTriggerRef = trigger.triggerRef;
const kind = hasTriggerRef
? referenceForModel(TriggerModel)
: referenceForModel(TriggerTemplateModel);
const triggerTemplateName = hasTriggerRef ? trigger.triggerRef : trigger.template?.name;
const bindings: ResourceModelLink[] = getEventListenerTriggerBindingNames(
trigger.bindings,
);
return (
<div key={`${triggerTemplateKind}/${triggerTemplateName}`}>
<div key={`${kind}/${triggerTemplateName}`}>
<ResourceLink
kind={triggerTemplateKind}
kind={kind}
name={triggerTemplateName}
displayName={triggerTemplateName}
namespace={namespace}
Expand Down
@@ -1,4 +1,4 @@
import { K8sResourceCommon } from '@console/internal/module/k8s';
import { K8sResourceCommon, K8sResourceKind, Toleration } from '@console/internal/module/k8s';
import { PipelineRun } from '../../../utils/pipeline-augment';

export type TriggerBindingParam = {
Expand Down Expand Up @@ -38,19 +38,66 @@ export type EventListenerKindBindingReference = {
/** @deprecated use ref instead */
name?: string;
};
type WebhookHeader = {
name: string;
value: string | string[];
};

type VCSInterceptor = {
secretRef: {
secretKey: string;
secretName: string;
};
eventTypes: string[];
};
type TriggerInterceptor = {
gitlab: VCSInterceptor;
github: VCSInterceptor;
bitbucket: VCSInterceptor;
webhook: {
header: WebhookHeader[];
objectRef: K8sResourceKind;
};
cel: {
filter?: string;
overlays: {
key: string;
expression: string;
}[];
};
};
export type EventListenerKindTrigger = {
bindings: EventListenerKindBindingReference[];
template: {
name?: string;
bindings?: EventListenerKindBindingReference[];
interceptors?: TriggerInterceptor;
template?: {
// Ref is used since Tekton Triggers 0.10.x (part of OpenShift Pipeline Operator 1.3)
ref?: string;
// We also support older operators, so need to show & save the old field as well.
// TriggerTemplateKind name reference
name: string;
// https://github.com/tektoncd/triggers/pull/898/files
// name will be deprecated in TP1.4
name?: string;
};
triggerRef?: {
ref: string;
};
};

export type EventListenerKind = K8sResourceCommon & {
spec: {
serviceAccountName: string;
triggers: EventListenerKindTrigger[];
// optional fields
replicas?: number;
serviceType?: string;
namespaceSelector?: {
matchNames: string[];
};
podTemplate?: {
nodeSelector: { [key: string]: string };
tolerations: Toleration[];
};
};
status?: {
configuration: {
Expand Down
Expand Up @@ -186,7 +186,7 @@ export const useTriggerTemplateEventListenerNames = (triggerTemplate: TriggerTem
return eventListenerResources
.filter((eventListener: EventListenerKind) =>
eventListener.spec.triggers.find(
({ template: { name } }) => name === getResourceName(triggerTemplate),
(trigger) => trigger.template?.name === getResourceName(triggerTemplate),
),
)
.map(getResourceName);
Expand All @@ -197,7 +197,7 @@ export const useTriggerBindingEventListenerNames = (triggerBinding: TriggerBindi
return eventListenerResources
.filter((eventListener: EventListenerKind) =>
eventListener.spec.triggers.find(({ bindings }) =>
bindings.find(
bindings?.find(
({ kind, name }) =>
getResourceName(triggerBinding) === name &&
getResourceModelFromBindingKind(kind).kind === triggerBinding.kind,
Expand Down
15 changes: 15 additions & 0 deletions frontend/packages/pipelines-plugin/src/models/pipelines.ts
Expand Up @@ -154,6 +154,21 @@ export const TriggerTemplateModel: K8sKind = {
color,
};

export const TriggerModel: K8sKind = {
apiGroup: 'triggers.tekton.dev',
apiVersion: 'v1alpha1',
label: 'Trigger',
plural: 'triggers',
abbr: 'T',
namespaced: true,
kind: 'Trigger',
id: 'trigger',
labelPlural: 'Triggers',
crd: true,
badge: BadgeType.TECH,
color,
};

export const EventListenerModel: K8sKind = {
apiGroup: 'triggers.tekton.dev',
apiVersion: 'v1alpha1',
Expand Down

0 comments on commit 64651a1

Please sign in to comment.