Add domain field into Clusters::Cluster
This is the 1st step for moving Auto DevOps domain into cluster settings, whether is project or group. Related to https://gitlab.com/gitlab-org/gitlab-ce/issues/52363
This commit is contained in:
		
							parent
							
								
									037fddad52
								
							
						
					
					
						commit
						cfe65a0d3e
					
				| 
						 | 
				
			
			@ -49,8 +49,9 @@ module Clusters
 | 
			
		|||
 | 
			
		||||
    validates :name, cluster_name: true
 | 
			
		||||
    validates :cluster_type, presence: true
 | 
			
		||||
    validate :restrict_modification, on: :update
 | 
			
		||||
    validates :domain, allow_nil: true, hostname: { allow_numeric_hostname: true, require_valid_tld: true }
 | 
			
		||||
 | 
			
		||||
    validate :restrict_modification, on: :update
 | 
			
		||||
    validate :no_groups, unless: :group_type?
 | 
			
		||||
    validate :no_projects, unless: :project_type?
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class AddDomainToCluster < ActiveRecord::Migration[5.0]
 | 
			
		||||
  DOWNTIME = false
 | 
			
		||||
 | 
			
		||||
  def change
 | 
			
		||||
    add_column :clusters, :domain, :string
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -647,6 +647,7 @@ ActiveRecord::Schema.define(version: 20190115054216) do
 | 
			
		|||
    t.string "name", null: false
 | 
			
		||||
    t.string "environment_scope", default: "*", null: false
 | 
			
		||||
    t.integer "cluster_type", limit: 2, default: 3, null: false
 | 
			
		||||
    t.string "domain"
 | 
			
		||||
    t.index ["enabled"], name: "index_clusters_on_enabled", using: :btree
 | 
			
		||||
    t.index ["user_id"], name: "index_clusters_on_user_id", using: :btree
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,5 +59,9 @@ FactoryBot.define do
 | 
			
		|||
    trait :with_installed_helm do
 | 
			
		||||
      application_helm factory: %i(clusters_applications_helm installed)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    trait :with_domain do
 | 
			
		||||
      domain 'example.com'
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ describe Clusters::Cluster do
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'validation' do
 | 
			
		||||
  describe 'validations' do
 | 
			
		||||
    subject { cluster.valid? }
 | 
			
		||||
 | 
			
		||||
    context 'when validates name' do
 | 
			
		||||
| 
						 | 
				
			
			@ -252,6 +252,31 @@ describe Clusters::Cluster do
 | 
			
		|||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe 'domain validation' do
 | 
			
		||||
      let(:cluster) { build(:cluster) }
 | 
			
		||||
 | 
			
		||||
      subject { cluster }
 | 
			
		||||
 | 
			
		||||
      context 'when cluster has domain' do
 | 
			
		||||
        let(:cluster) { build(:cluster, :with_domain) }
 | 
			
		||||
 | 
			
		||||
        it { is_expected.to be_valid }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when cluster has an invalid domain' do
 | 
			
		||||
        let(:cluster) { build(:cluster, domain: 'not-valid-domain') }
 | 
			
		||||
 | 
			
		||||
        it 'should add an error on domain' do
 | 
			
		||||
          expect(subject).not_to be_valid
 | 
			
		||||
          expect(subject.errors[:domain].first).to eq('is not a fully qualified domain name')
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      context 'when cluster does not have a domain' do
 | 
			
		||||
        it { is_expected.to be_valid }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.ancestor_clusters_for_clusterable' do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue