summaryrefslogtreecommitdiff
path: root/app/models/terraform
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2021-01-20 13:34:23 -0600
committerRobert Speicher <rspeicher@gmail.com>2021-01-20 13:34:23 -0600
commit6438df3a1e0fb944485cebf07976160184697d72 (patch)
tree00b09bfd170e77ae9391b1a2f5a93ef6839f2597 /app/models/terraform
parent42bcd54d971da7ef2854b896a7b34f4ef8601067 (diff)
downloadgitlab-ce-6438df3a1e0fb944485cebf07976160184697d72.tar.gz
Add latest changes from gitlab-org/gitlab@13-8-stable-eev13.8.0-rc42
Diffstat (limited to 'app/models/terraform')
-rw-r--r--app/models/terraform/state.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/app/models/terraform/state.rb b/app/models/terraform/state.rb
index 1b99f310e1a..efbbd86ae4a 100644
--- a/app/models/terraform/state.rb
+++ b/app/models/terraform/state.rb
@@ -27,6 +27,8 @@ module Terraform
validates :uuid, presence: true, uniqueness: true, length: { is: UUID_LENGTH },
format: { with: HEX_REGEXP, message: 'only allows hex characters' }
+ before_destroy :ensure_state_is_unlocked
+
default_value_for(:uuid, allows_nil: false) { SecureRandom.hex(UUID_LENGTH / 2) }
def latest_file
@@ -87,6 +89,13 @@ module Terraform
new_version.save!
end
+ def ensure_state_is_unlocked
+ return unless locked?
+
+ errors.add(:base, s_("Terraform|You cannot remove the State file because it's locked. Unlock the State file first before removing it."))
+ throw :abort # rubocop:disable Cop/BanCatchThrow
+ end
+
def parse_serial(file)
Gitlab::Json.parse(file)["serial"]
rescue JSON::ParserError