Skip to content

Commit

Permalink
feat(cf): add user provided service support (#6293)
Browse files Browse the repository at this point in the history
Co-Authored-By: Stu Pollock <spollock@pivotal.io>
  • Loading branch information
2 people authored and jkschneider committed Jan 4, 2019
1 parent 16fd07d commit f3d35e1
Show file tree
Hide file tree
Showing 13 changed files with 581 additions and 377 deletions.
2 changes: 1 addition & 1 deletion app/scripts/modules/cloudfoundry/src/cf.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { CloudFoundryNoLoadBalancerModal } from './loadBalancer/configure/cloudF
import 'cloudfoundry/pipeline/config/validation/instanceSize.validator';
import 'cloudfoundry/pipeline/config/validation/cfTargetImpedance.validator';
import 'cloudfoundry/pipeline/config/validation/validServiceParameterJson.validator';
import 'cloudfoundry/pipeline/config/validation/validateManifestRequiredField.validator.ts';
import 'cloudfoundry/pipeline/config/validation/validateServiceRequiredField.validator.ts';
import { CLOUD_FOUNDRY_DEPLOY_SERVICE_STAGE } from './pipeline/stages/deployService/cloudfoundryDeployServiceStage.module';
import { CLOUD_FOUNDRY_DESTROY_ASG_STAGE } from './pipeline/stages/destroyAsg/cloudfoundryDestroyAsgStage.module';
import { CLOUD_FOUNDRY_DESTROY_SERVICE_STAGE } from './pipeline/stages/destroyService/cloudfoundryDestroyServiceStage.module';
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { IValidatorConfig } from '@spinnaker/core';

export interface IServiceFieldValidatorConfig extends IValidatorConfig {
serviceInputType: string;
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import { get, upperFirst } from 'lodash';

import { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, PipelineConfigValidator } from '@spinnaker/core';
import { IManifestFieldValidatorConfig } from 'cloudfoundry/pipeline/config/validation/ManifestConfigValidator';
import { IServiceFieldValidatorConfig } from 'cloudfoundry/pipeline/config/validation/ServiceFieldValidatorConfig';

export class ServiceParameterJsonFieldValidator implements IStageOrTriggerValidator {
private static validationMessage(validationConfig: IManifestFieldValidatorConfig): string {
private static validationMessage(validationConfig: IServiceFieldValidatorConfig): string {
const fieldLabel: string = ServiceParameterJsonFieldValidator.printableFieldLabel(validationConfig);
return validationConfig.message || `<strong>${fieldLabel}</strong> should be a valid JSON string.`;
}

private static printableFieldLabel(config: IManifestFieldValidatorConfig): string {
private static printableFieldLabel(config: IServiceFieldValidatorConfig): string {
const fieldLabel: string = config.fieldLabel || config.fieldName;
return upperFirst(fieldLabel);
}

private static fieldIsValid(stage: IStage | ITrigger, config: IManifestFieldValidatorConfig): boolean {
const manifest: any = get(stage, 'manifest');
const content: any = get(manifest, config.fieldName);
private static fieldIsValid(stage: IStage | ITrigger, config: IServiceFieldValidatorConfig): boolean {
const serviceInput = get(stage, 'manifest');
const content: any = get(serviceInput, config.fieldName);

if (!content) {
return true;
Expand All @@ -33,11 +33,10 @@ export class ServiceParameterJsonFieldValidator implements IStageOrTriggerValida
public validate(
_pipeline: IPipeline,
stage: IStage | ITrigger,
validationConfig: IManifestFieldValidatorConfig,
validationConfig: IServiceFieldValidatorConfig,
): string {
const manifest: any = get(stage, 'manifest');

if (manifest.type !== validationConfig.manifestType) {
const serviceInput: any = get(stage, 'manifest');
if (serviceInput.type !== validationConfig.serviceInputType) {
return null;
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { get, upperFirst } from 'lodash';

import { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, PipelineConfigValidator } from '@spinnaker/core';
import { IServiceFieldValidatorConfig } from 'cloudfoundry/pipeline/config/validation/ServiceFieldValidatorConfig';

export class RequiredServiceFieldValidator implements IStageOrTriggerValidator {
public validate(
_pipeline: IPipeline,
stage: IStage | ITrigger,
validationConfig: IServiceFieldValidatorConfig,
): string {
const serviceInput: any = get(stage, 'manifest');
if (serviceInput.type !== validationConfig.serviceInputType) {
return null;
}
const content: any = get(serviceInput, validationConfig.fieldName);
const fieldLabel = upperFirst(validationConfig.fieldName);
return content ? null : `<strong>${fieldLabel}</strong> is a required field for Deploy Service stages.`;
}
}

PipelineConfigValidator.registerValidator('requiredServiceField', new RequiredServiceFieldValidator());
Loading

0 comments on commit f3d35e1

Please sign in to comment.