From 89aed150590f8d65148a029ecfc49702f093817e Mon Sep 17 00:00:00 2001 From: Pablo Klijnjan Date: Tue, 23 Feb 2016 13:11:15 +0200 Subject: [PATCH] gh-21 Added resource deletion to all resources closes #21 - Moved common stuff to a mixin --- app/mirage/config.js | 8 +++++++ app/mixins/resource-delete-action.js | 30 +++++++++++++++++++++++++ app/mixins/resource-list-route.js | 9 +++++++- app/pod/route.js | 21 +++-------------- app/replication-controller/route.js | 12 ++++++++-- app/replication-controller/template.hbs | 7 +++--- app/service/route.js | 5 ++++- app/service/template.hbs | 5 ++++- app/session/service.js | 2 +- 9 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 app/mixins/resource-delete-action.js diff --git a/app/mirage/config.js b/app/mirage/config.js index ba20ea6..987b8fb 100644 --- a/app/mirage/config.js +++ b/app/mirage/config.js @@ -108,6 +108,10 @@ export default function() { return db.services.insert(manifest); }); + this.del('/namespaces/:namespace/services/:name', function(db, request) { + return db.services.remove(request.params.name); + }); + this.get('/namespaces/:namespace/services/:name', function(db, request) { return db.services.find(request.params.name); }); @@ -137,6 +141,10 @@ export default function() { this.put('/namespaces/:namespace/replicationcontrollers/:name', function(db, request) { return JSON.parse(request.requestBody); }); + + this.del('/namespaces/:namespace/replicationcontrollers/:name', function(db, request) { + return db.replicationcontrollers.remove(request.params.name); + }); } /* diff --git a/app/mixins/resource-delete-action.js b/app/mixins/resource-delete-action.js new file mode 100644 index 0000000..f572452 --- /dev/null +++ b/app/mixins/resource-delete-action.js @@ -0,0 +1,30 @@ +import Ember from 'ember'; + +export default Ember.Mixin.create({ + + session: Ember.inject.service(), + + actions: { + del(manifest) { + let flashMessages = this.get('flashMessages'); + flashMessages.clearMessages(); + this.get('kubeClient').deleteRecord(manifest).then(() => { + let kind = manifest.kind; + this.get(`session.pendingRemoval.${kind.toLowerCase()}`).push(manifest.metadata.name); + let message = `Successfully sent request to delete ${manifest.kind} ${manifest.metadata.name}`; + flashMessages.positive(message); + this.transitionTo(Ember.Inflector.inflector.pluralize(kind).dasherize()); + }).catch((error) => { + window.console.error(error); + let message = null; + if (error.errors) { + message = error.errors[0].detail; + } else { + message = error.message; + } + flashMessages.negative(message, { sticky: true }); + }); + } + } + +}); diff --git a/app/mixins/resource-list-route.js b/app/mixins/resource-list-route.js index cdc80bf..18503d1 100644 --- a/app/mixins/resource-list-route.js +++ b/app/mixins/resource-list-route.js @@ -16,7 +16,14 @@ export default Ember.Mixin.create({ flashMessages.positive('Successfully created'); this.refresh(); }).catch((error) => { - flashMessages.negative(error.errors[0].detail, { timeout: 10000 }); + window.console.error(error); + let message = null; + if (error.errors) { + message = error.errors[0].detail; + } else { + message = error.message; + } + flashMessages.negative(message, { sticky: true }); }); } } diff --git a/app/pod/route.js b/app/pod/route.js index 9a6edc2..75c2505 100644 --- a/app/pod/route.js +++ b/app/pod/route.js @@ -1,27 +1,12 @@ import Ember from 'ember'; +import ResourceDeleteAction from 'kube-admin/mixins/resource-delete-action'; -export default Ember.Route.extend({ - session: Ember.inject.service(), +export default Ember.Route.extend(ResourceDeleteAction, { kubeClient: Ember.inject.service(), model(params) { return this.get('kubeClient').findRecord('pod', params.namespace, params.name); - }, - - actions: { - del(manifest) { - let flashMessages = this.get('flashMessages'); - flashMessages.clearMessages(); - this.get('kubeClient').deleteRecord(manifest).then(() => { - let kind = manifest.kind.toLowerCase(); - this.get(`session.pendingRemoval.${kind}`).push(manifest.metadata.name); - let message = `Successfully sent request to delete ${manifest.kind} ${manifest.metadata.name}`; - flashMessages.positive(message); - this.transitionTo('pods'); - }).catch((error) => { - flashMessages.negative(error.errors[0].detail, { timeout: 10000 }); - }); - } } + }); diff --git a/app/replication-controller/route.js b/app/replication-controller/route.js index 1bea4d7..c2477e4 100644 --- a/app/replication-controller/route.js +++ b/app/replication-controller/route.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import ResourceDeleteAction from 'kube-admin/mixins/resource-delete-action'; -export default Ember.Route.extend({ +export default Ember.Route.extend(ResourceDeleteAction, { kubeClient: Ember.inject.service(), model(params) { @@ -20,7 +21,14 @@ export default Ember.Route.extend({ flashMessages.info(message, { timeout: 5000 }); this.refresh(); }).catch((error) => { - flashMessages.negative(error.errors[0].detail, { sticky: true }); + window.console.error(error); + let message = null; + if (error.errors) { + message = error.errors[0].detail; + } else { + message = error.message; + } + flashMessages.negative(message, { sticky: true }); }); } } diff --git a/app/replication-controller/template.hbs b/app/replication-controller/template.hbs index 9d4b5b8..38aa06c 100644 --- a/app/replication-controller/template.hbs +++ b/app/replication-controller/template.hbs @@ -1,7 +1,8 @@ {{#resource-details - model=model - keys='status.observedGeneration' - spec=model.spec.template.spec}} + model=model + keys='status.observedGeneration' + spec=model.spec.template.spec + del=(route-action "del")}} Replicas (Spec) diff --git a/app/service/route.js b/app/service/route.js index da3dbd7..3305d74 100644 --- a/app/service/route.js +++ b/app/service/route.js @@ -1,9 +1,12 @@ import Ember from 'ember'; +import ResourceDeleteAction from 'kube-admin/mixins/resource-delete-action'; + +export default Ember.Route.extend(ResourceDeleteAction, { -export default Ember.Route.extend({ kubeClient: Ember.inject.service(), model(params) { return this.get('kubeClient').findRecord('service', params.namespace, params.name); } + }); diff --git a/app/service/template.hbs b/app/service/template.hbs index 946ca1f..85ca8db 100644 --- a/app/service/template.hbs +++ b/app/service/template.hbs @@ -1,4 +1,7 @@ -{{resource-details model=model keys='spec.clusterIP,spec.sessionAffinity'}} +{{resource-details + model=model + keys='spec.clusterIP,spec.sessionAffinity' + del=(route-action "del")}} {{#if model.spec.ports}}

Ports

diff --git a/app/session/service.js b/app/session/service.js index 5eab539..8718ab4 100644 --- a/app/session/service.js +++ b/app/session/service.js @@ -11,7 +11,7 @@ export default Ember.Service.extend({ filters: {}, - pendingRemoval: { pod: [] }, + pendingRemoval: { pod: [], replicationcontroller: [], service: [] }, init() { this._super(...arguments);