diff --git a/app/models/project_services/kubernetes_service.rb b/app/models/project_services/kubernetes_service.rb index ddd4026019b264d366bb6ec4d458fe6780a92131..722642f6da78b92b8fcbaca895b4348a7f0645ca 100644 --- a/app/models/project_services/kubernetes_service.rb +++ b/app/models/project_services/kubernetes_service.rb @@ -240,7 +240,7 @@ def enforce_namespace_to_lower_case end def deprecation_validation - return if active_changed?(from: true, to: false) + return if active_changed?(from: true, to: false) || (new_record? && !active?) if deprecated? errors[:base] << deprecation_message diff --git a/app/models/service.rb b/app/models/service.rb index 1d259bcfec78af6ea123e7d35c3e853fec29951f..ad835293b46d4e8b753267b4f52bc80116bc3754 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -281,9 +281,9 @@ def self.available_services_names def self.build_from_template(project_id, template) service = template.dup - service.active = false unless service.valid? service.template = false service.project_id = project_id + service.active = false if service.active? && !service.valid? service end diff --git a/changelogs/unreleased/dm-invalid-active-service-template.yml b/changelogs/unreleased/dm-invalid-active-service-template.yml new file mode 100644 index 0000000000000000000000000000000000000000..8b77fac55b9a5c9e5295097d75eb9d76fcf003da --- /dev/null +++ b/changelogs/unreleased/dm-invalid-active-service-template.yml @@ -0,0 +1,5 @@ +--- +title: Deactivate new KubernetesService created from active template to prevent project creation from failing +merge_request: +author: +type: fixed diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb index 28c908ea4258aa71bbdf8359db4c3b33d253c52f..a849af062c5e16193fe5b979e32de817c285cc23 100644 --- a/spec/models/service_spec.rb +++ b/spec/models/service_spec.rb @@ -78,7 +78,7 @@ context 'when template is invalid' do it 'sets service template to inactive when template is invalid' do project = create(:project) - template = JiraService.new(template: true, active: true) + template = KubernetesService.new(template: true, active: true) template.save(validate: false) service = described_class.build_from_template(project.id, template)