Add support for not_installable/scheduled and to not show created banner
This commit is contained in:
parent
001de85e7c
commit
f3a3566edc
6 changed files with 21 additions and 5 deletions
|
@ -132,9 +132,12 @@ export default class Clusters {
|
||||||
|
|
||||||
handleSuccess(data) {
|
handleSuccess(data) {
|
||||||
const prevApplicationMap = Object.assign({}, this.store.state.applications);
|
const prevApplicationMap = Object.assign({}, this.store.state.applications);
|
||||||
|
const prevStatus = this.store.state.status;
|
||||||
this.store.updateStateFromServer(data.data);
|
this.store.updateStateFromServer(data.data);
|
||||||
this.checkForNewInstalls(prevApplicationMap, this.store.state.applications);
|
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() {
|
toggle() {
|
||||||
|
|
|
@ -3,6 +3,8 @@ import { s__ } from '../../locale';
|
||||||
import eventHub from '../event_hub';
|
import eventHub from '../event_hub';
|
||||||
import loadingButton from '../../vue_shared/components/loading_button.vue';
|
import loadingButton from '../../vue_shared/components/loading_button.vue';
|
||||||
import {
|
import {
|
||||||
|
APPLICATION_NOT_INSTALLABLE,
|
||||||
|
APPLICATION_SCHEDULED,
|
||||||
APPLICATION_INSTALLABLE,
|
APPLICATION_INSTALLABLE,
|
||||||
APPLICATION_INSTALLING,
|
APPLICATION_INSTALLING,
|
||||||
APPLICATION_INSTALLED,
|
APPLICATION_INSTALLED,
|
||||||
|
@ -59,6 +61,7 @@ export default {
|
||||||
},
|
},
|
||||||
installButtonLoading() {
|
installButtonLoading() {
|
||||||
return !this.status ||
|
return !this.status ||
|
||||||
|
this.status === APPLICATION_SCHEDULED ||
|
||||||
this.status === APPLICATION_INSTALLING ||
|
this.status === APPLICATION_INSTALLING ||
|
||||||
this.requestStatus === REQUEST_LOADING;
|
this.requestStatus === REQUEST_LOADING;
|
||||||
},
|
},
|
||||||
|
@ -72,9 +75,9 @@ export default {
|
||||||
},
|
},
|
||||||
installButtonLabel() {
|
installButtonLabel() {
|
||||||
let label;
|
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');
|
label = s__('ClusterIntegration|Install');
|
||||||
} else if (this.status === APPLICATION_INSTALLING) {
|
} else if (this.status === APPLICATION_SCHEDULED || this.status === APPLICATION_INSTALLING) {
|
||||||
label = s__('ClusterIntegration|Installing');
|
label = s__('ClusterIntegration|Installing');
|
||||||
} else if (this.status === APPLICATION_INSTALLED) {
|
} else if (this.status === APPLICATION_INSTALLED) {
|
||||||
label = s__('ClusterIntegration|Installed');
|
label = s__('ClusterIntegration|Installed');
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
// These need to match what is returned from the server
|
// 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_INSTALLABLE = 'installable';
|
||||||
|
export const APPLICATION_SCHEDULED = 'scheduled';
|
||||||
export const APPLICATION_INSTALLING = 'installing';
|
export const APPLICATION_INSTALLING = 'installing';
|
||||||
export const APPLICATION_INSTALLED = 'installed';
|
export const APPLICATION_INSTALLED = 'installed';
|
||||||
export const APPLICATION_ERROR = 'error';
|
export const APPLICATION_ERROR = 'error';
|
||||||
|
|
|
@ -11,10 +11,16 @@ module Clusters
|
||||||
|
|
||||||
validates :cluster, presence: true
|
validates :cluster, presence: true
|
||||||
|
|
||||||
|
after_initialize :set_initial_status
|
||||||
|
|
||||||
def self.application_name
|
def self.application_name
|
||||||
self.to_s.demodulize.underscore
|
self.to_s.demodulize.underscore
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_initial_status
|
||||||
|
self.status = 0 unless cluster.platform_kubernetes_active?
|
||||||
|
end
|
||||||
|
|
||||||
def name
|
def name
|
||||||
self.class.application_name
|
self.class.application_name
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,6 +37,9 @@ module Clusters
|
||||||
delegate :on_creation?, to: :provider, allow_nil: true
|
delegate :on_creation?, to: :provider, allow_nil: true
|
||||||
delegate :update_kubernetes_integration!, to: :platform, 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: {
|
enum platform_type: {
|
||||||
kubernetes: 1
|
kubernetes: 1
|
||||||
}
|
}
|
||||||
|
@ -58,8 +61,6 @@ module Clusters
|
||||||
end
|
end
|
||||||
|
|
||||||
def applications
|
def applications
|
||||||
return [] unless kubernetes?
|
|
||||||
|
|
||||||
[
|
[
|
||||||
application_helm || build_application_helm
|
application_helm || build_application_helm
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,6 +5,7 @@ module Clusters
|
||||||
|
|
||||||
included do
|
included do
|
||||||
state_machine :status, initial: :installable do
|
state_machine :status, initial: :installable do
|
||||||
|
state :not_installable, value: -2
|
||||||
state :errored, value: -1
|
state :errored, value: -1
|
||||||
state :installable, value: 0
|
state :installable, value: 0
|
||||||
state :scheduled, value: 1
|
state :scheduled, value: 1
|
||||||
|
|
Loading…
Reference in a new issue