Skip to content

Commit

Permalink
feat(provider/kubernetes): edit manifest in details view (#4426)
Browse files Browse the repository at this point in the history
  • Loading branch information
lwander committed Nov 13, 2017
1 parent a74146e commit 4d35a76
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 7 deletions.
2 changes: 2 additions & 0 deletions app/scripts/modules/kubernetes/src/v2/kubernetes.v2.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import '../logo/kubernetes.logo.less';
import { KUBERNETES_MANIFEST_COMMAND_BUILDER } from './manifest/manifestCommandBuilder.service';
import { KUBERNETES_MANIFEST_BASIC_SETTINGS } from './manifest/wizard/basicSettings.component';
import { KUBERNETES_MANIFEST_CTRL } from './manifest/wizard/manifestWizard.controller';
import { KUBERNETES_EDIT_MANIFEST_CTRL } from './manifest/edit/editManifestWizard.controller';
import { KUBERNETES_MANIFEST_DELETE_CTRL } from './manifest/delete/delete.controller';
import { KUBERNETES_MANIFEST_ENTRY } from './manifest/wizard/manifestEntry.component';
import { KUBERNETES_V2_INSTANCE_DETAILS_CTRL } from './instance/details/details.controller';
Expand Down Expand Up @@ -34,6 +35,7 @@ module(KUBERNETES_V2_MODULE, [
KUBERNETES_MANIFEST_BASIC_SETTINGS,
KUBERNETES_MANIFEST_COMMAND_BUILDER,
KUBERNETES_MANIFEST_CTRL,
KUBERNETES_EDIT_MANIFEST_CTRL,
KUBERNETES_MANIFEST_DELETE_CTRL,
KUBERNETES_MANIFEST_ENTRY,
]).config((cloudProviderRegistryProvider: CloudProviderRegistry) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import { IController, module } from 'angular';
import { IModalInstanceService } from 'angular-ui-bootstrap';

import {
Application,
IMoniker,
ManifestWriter,
SERVER_GROUP_WRITER,
TASK_MONITOR_BUILDER,
TaskMonitor,
TaskMonitorBuilder
} from '@spinnaker/core';

import {
IKubernetesManifestCommand,
KUBERNETES_MANIFEST_COMMAND_BUILDER,
KubernetesManifestCommandBuilder
} from '../manifestCommandBuilder.service';

class KubernetesEditManifestCtrl implements IController {
public state = {
loaded: false,
isNew: false,
};
public taskMonitor: TaskMonitor;
public command: IKubernetesManifestCommand;

constructor(sourceManifest: any,
sourceMoniker: IMoniker,
private $uibModalInstance: IModalInstanceService,
private application: Application,
private manifestWriter: ManifestWriter,
private taskMonitorBuilder: TaskMonitorBuilder,
private kubernetesManifestCommandBuilder: KubernetesManifestCommandBuilder) {
'ngInject';
this.kubernetesManifestCommandBuilder.buildNewManifestCommand(application, sourceManifest, sourceMoniker)
.then((builtCommand) => {
this.command = builtCommand;
this.initialize();
this.state.loaded = true;
});
}

public cancel(): void {
this.$uibModalInstance.dismiss();
}

public submit(): void {
const command = this.kubernetesManifestCommandBuilder.copyAndCleanCommand(this.command);
const submitMethod = () => this.manifestWriter.deployManifest(command, this.application);
this.taskMonitor.submit(submitMethod);
}

private initialize(): void {
this.taskMonitor = this.taskMonitorBuilder.buildTaskMonitor({
application: this.application,
title: 'Updating your manifest',
modalInstance: this.$uibModalInstance,
});
}

public showSubmitButton(): boolean {
return true;
}

public isValid(): boolean {
return this.kubernetesManifestCommandBuilder.manifestCommandIsValid(this.command);
}
}

export const KUBERNETES_EDIT_MANIFEST_CTRL = 'spinnaker.kubernetes.v2.manifest.edit.controller';
module(KUBERNETES_EDIT_MANIFEST_CTRL, [
SERVER_GROUP_WRITER,
TASK_MONITOR_BUILDER,
KUBERNETES_MANIFEST_COMMAND_BUILDER,
]).controller('kubernetesV2ManifestEditCtrl', KubernetesEditManifestCtrl);
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { copy, IPromise, IQService, module } from 'angular';

import { load } from 'js-yaml'
import { dump, load } from 'js-yaml'

import { ACCOUNT_SERVICE, AccountService, Application, IMoniker } from '@spinnaker/core';

Expand Down Expand Up @@ -53,7 +53,7 @@ export class KubernetesManifestCommandBuilder {
return command;
}

public buildNewManifestCommand(app: Application): IPromise<IKubernetesManifestCommand> {
public buildNewManifestCommand(app: Application, sourceManifest?: any, sourceMoniker?: IMoniker): IPromise<IKubernetesManifestCommand> {
const dataToFetch = {
accounts: this.accountService.getAllAccountDetailsForProvider('kubernetes', 'v2'),
};
Expand All @@ -67,11 +67,12 @@ export class KubernetesManifestCommandBuilder {
}

const manifest = {};
const manifestText = '';
const manifestText = sourceManifest == null ? '' : dump(sourceManifest);
const cloudProvider = 'kubernetes';
const moniker = {
const moniker = sourceMoniker || {
app: app.name,
};

const relationships = {
loadBalancers: [] as string[],
securityGroups: [] as string[],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
class KubernetesManifestWizardCtrl implements IController {
public state = {
loaded: false,
isNew: true,
};
public taskMonitor: TaskMonitor;
public command: IKubernetesManifestCommand;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<h3 us-spinner="{radius:30, width:8, length: 16}"></h3>
</div>
<v2-modal-wizard ng-if="ctrl.state.loaded"
heading="Deploy Manifest"
heading="{{ctrl.state.isNew ? 'Deploy' : 'Edit'}} Manifest"
task-monitor="ctrl.taskMonitor"
dismiss="$dismiss()">
<v2-wizard-page key="basicSettings" label="Basic Settings" mark-complete-on-view="false">
Expand All @@ -18,7 +18,7 @@ <h3 us-spinner="{radius:30, width:8, length: 16}"></h3>
<div class="modal-footer" ng-if="ctrl.state.loaded">
<button ng-disabled="ctrl.taskMonitor.submitting" class="btn btn-default btn-cancel" ng-click="ctrl.cancel()">Cancel</button>
<submit-button ng-if="ctrl.showSubmitButton()" is-disabled="!ctrl.isValid() || ctrl.taskMonitor.submitting"
label="Deploy"
is-new="ctrl.state.isNew"
submitting="ctrl.taskMonitor.submitting" on-click="ctrl.submit()" is-new="true"></submit-button>
</div>
</form>
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,20 @@ class KubernetesServerGroupDetailsController implements IController {
});
}

public editServerGroup(): void {
this.$uibModal.open({
templateUrl: require('../../manifest/wizard/manifestWizard.html'),
size: 'lg',
controller: 'kubernetesV2ManifestEditCtrl',
controllerAs: 'ctrl',
resolve: {
sourceManifest: this.serverGroup.manifest,
sourceMoniker: this.serverGroup.moniker,
application: this.app
}
});
}

public deleteServerGroup(): void {
this.$uibModal.open({
templateUrl: require('../../manifest/delete/delete.html'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,16 @@ <h3 select-on-dbl-click>
Resize
</a>
</li>
<li>
<a href ng-click="ctrl.editServerGroup()">
Edit
</a>
</li>
<li>
<a href ng-click="ctrl.deleteServerGroup()">
Delete
</a>
<li>
</li>
</ul>
</div>
<div class="clearfix"></div>
Expand Down

0 comments on commit 4d35a76

Please sign in to comment.