Class: Bosh::Director::DeploymentPlan::DeploymentRepo

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/deployment_plan/deployment_repo.rb

Instance Method Summary collapse

Constructor Details

#initialize(canonicalizer) ⇒ DeploymentRepo

Returns a new instance of DeploymentRepo.



6
7
8
# File 'lib/bosh/director/deployment_plan/deployment_repo.rb', line 6

def initialize(canonicalizer)
  @canonicalizer = canonicalizer
end

Instance Method Details

#find_or_create_by_name(name) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/bosh/director/deployment_plan/deployment_repo.rb', line 10

def find_or_create_by_name(name)
  deployment = Models::Deployment.find(name: name)
  return deployment if deployment

  canonical_name = @canonicalizer.canonical(name)
  Models::Deployment.db.transaction do
    Models::Deployment.each do |other|
      if @canonicalizer.canonical(other.name) == canonical_name
        raise DeploymentCanonicalNameTaken,
          "Invalid deployment name `#{name}', canonical name already taken (`#{canonical_name}')"
      end
    end
    Models::Deployment.create(name: name)
  end
end