summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2017-11-06 15:48:44 +0100
committerKamil Trzcinski <ayufan@ayufan.eu>2017-11-06 15:52:17 +0100
commitf3a3566edc8fe24337b9df163f4699785061bb38 (patch)
tree9f4c8c5ab31a0e789f2fd796d73642ccad86383c
parent001de85e7c6f86423aca0d245fdc83c57b374630 (diff)
downloadgitlab-ce-f3a3566edc8fe24337b9df163f4699785061bb38.tar.gz
Add support for not_installable/scheduled and to not show created banner
-rw-r--r--app/assets/javascripts/clusters/clusters_bundle.js5
-rw-r--r--app/assets/javascripts/clusters/components/application_row.vue7
-rw-r--r--app/assets/javascripts/clusters/constants.js2
-rw-r--r--app/models/clusters/applications/helm.rb6
-rw-r--r--app/models/clusters/cluster.rb5
-rw-r--r--app/models/clusters/concerns/application_status.rb1
6 files changed, 21 insertions, 5 deletions
diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js
index 9a436b3e22d..4d4c90460d2 100644
--- a/app/assets/javascripts/clusters/clusters_bundle.js
+++ b/app/assets/javascripts/clusters/clusters_bundle.js
@@ -132,9 +132,12 @@ export default class Clusters {
handleSuccess(data) {
const prevApplicationMap = Object.assign({}, this.store.state.applications);
+ const prevStatus = this.store.state.status;
this.store.updateStateFromServer(data.data);
this.checkForNewInstalls(prevApplicationMap, this.store.state.applications);
- this.updateContainer(this.store.state.status, this.store.state.statusReason);
+ if (prevStatus.length == 0 || prevStatus !== this.store.state.status) {
+ this.updateContainer(this.store.state.status, this.store.state.statusReason);
+ }
}
toggle() {
diff --git a/app/assets/javascripts/clusters/components/application_row.vue b/app/assets/javascripts/clusters/components/application_row.vue
index f8d53fcc4b7..9c5ff39534f 100644
--- a/app/assets/javascripts/clusters/components/application_row.vue
+++ b/app/assets/javascripts/clusters/components/application_row.vue
@@ -3,6 +3,8 @@ import { s__ } from '../../locale';
import eventHub from '../event_hub';
import loadingButton from '../../vue_shared/components/loading_button.vue';
import {
+ APPLICATION_NOT_INSTALLABLE,
+ APPLICATION_SCHEDULED,
APPLICATION_INSTALLABLE,
APPLICATION_INSTALLING,
APPLICATION_INSTALLED,
@@ -59,6 +61,7 @@ export default {
},
installButtonLoading() {
return !this.status ||
+ this.status === APPLICATION_SCHEDULED ||
this.status === APPLICATION_INSTALLING ||
this.requestStatus === REQUEST_LOADING;
},
@@ -72,9 +75,9 @@ export default {
},
installButtonLabel() {
let label;
- if (this.status === APPLICATION_INSTALLABLE || this.status === APPLICATION_ERROR) {
+ if (this.status === APPLICATION_INSTALLABLE || this.status === APPLICATION_ERROR || this.status === APPLICATION_NOT_INSTALLABLE) {
label = s__('ClusterIntegration|Install');
- } else if (this.status === APPLICATION_INSTALLING) {
+ } else if (this.status === APPLICATION_SCHEDULED || this.status === APPLICATION_INSTALLING) {
label = s__('ClusterIntegration|Installing');
} else if (this.status === APPLICATION_INSTALLED) {
label = s__('ClusterIntegration|Installed');
diff --git a/app/assets/javascripts/clusters/constants.js b/app/assets/javascripts/clusters/constants.js
index 3f202435716..f1894b173b9 100644
--- a/app/assets/javascripts/clusters/constants.js
+++ b/app/assets/javascripts/clusters/constants.js
@@ -1,5 +1,7 @@
// These need to match what is returned from the server
+export const APPLICATION_NOT_INSTALLABLE = 'not_installable';
export const APPLICATION_INSTALLABLE = 'installable';
+export const APPLICATION_SCHEDULED = 'scheduled';
export const APPLICATION_INSTALLING = 'installing';
export const APPLICATION_INSTALLED = 'installed';
export const APPLICATION_ERROR = 'error';
diff --git a/app/models/clusters/applications/helm.rb b/app/models/clusters/applications/helm.rb
index 42626a50175..9bc5c026645 100644
--- a/app/models/clusters/applications/helm.rb
+++ b/app/models/clusters/applications/helm.rb
@@ -11,10 +11,16 @@ module Clusters
validates :cluster, presence: true
+ after_initialize :set_initial_status
+
def self.application_name
self.to_s.demodulize.underscore
end
+ def set_initial_status
+ self.status = 0 unless cluster.platform_kubernetes_active?
+ end
+
def name
self.class.application_name
end
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index 5b9bd6e548b..68759ebb6df 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -37,6 +37,9 @@ module Clusters
delegate :on_creation?, to: :provider, allow_nil: true
delegate :update_kubernetes_integration!, to: :platform, allow_nil: true
+ delegate :active?, to: :platform_kubernetes, prefix: true, allow_nil: true
+ delegate :installed?, to: :application_helm, prefix: true, allow_nil: true
+
enum platform_type: {
kubernetes: 1
}
@@ -58,8 +61,6 @@ module Clusters
end
def applications
- return [] unless kubernetes?
-
[
application_helm || build_application_helm
]
diff --git a/app/models/clusters/concerns/application_status.rb b/app/models/clusters/concerns/application_status.rb
index 7bb68d75224..7592dd55689 100644
--- a/app/models/clusters/concerns/application_status.rb
+++ b/app/models/clusters/concerns/application_status.rb
@@ -5,6 +5,7 @@ module Clusters
included do
state_machine :status, initial: :installable do
+ state :not_installable, value: -2
state :errored, value: -1
state :installable, value: 0
state :scheduled, value: 1