diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 09:06:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 09:06:02 +0300 |
commit | 4a45a787703cb78c6101750cfbdc9f656b934b42 (patch) | |
tree | f75dfc23baed5f27be7799411b4ebb8c8bd20ceb /app/models/clusters/concerns | |
parent | 83ad9ec8cc449dca0b57a34a10afd529326c1d57 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/clusters/concerns')
-rw-r--r-- | app/models/clusters/concerns/provider_status.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/models/clusters/concerns/provider_status.rb b/app/models/clusters/concerns/provider_status.rb new file mode 100644 index 00000000000..4d1974777ea --- /dev/null +++ b/app/models/clusters/concerns/provider_status.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module Clusters + module Concerns + module ProviderStatus + extend ActiveSupport::Concern + + included do + state_machine :status, initial: :scheduled do + state :scheduled, value: 1 + state :creating, value: 2 + state :created, value: 3 + state :errored, value: 4 + + event :make_creating do + transition any - [:creating] => :creating + end + + event :make_created do + transition any - [:created] => :created + end + + event :make_errored do + transition any - [:errored] => :errored + end + + before_transition any => [:errored, :created] do |provider| + provider.nullify_credentials + end + + before_transition any => [:creating] do |provider, transition| + operation_id = transition.args.first + provider.assign_operation_id(operation_id) if operation_id + end + + before_transition any => [:errored] do |provider, transition| + status_reason = transition.args.first + provider.status_reason = status_reason if status_reason + end + end + + def on_creation? + scheduled? || creating? + end + end + end + end +end |