class Algo::Runner::Apply::ServiceValidator

Public Class Methods

new(srv_spec) click to toggle source
# File lib/algo/runner/apply.rb, line 6
def initialize srv_spec
  @srv_spec = srv_spec
end
validate(srv_spec) click to toggle source
# File lib/algo/runner/apply.rb, line 19
def self.validate srv_spec
  new(srv_spec).validate
end

Public Instance Methods

validate() click to toggle source
# File lib/algo/runner/apply.rb, line 10
def validate
  begin
    @srv = Algo::Docker::Service.find(@srv_spec['Name'])
  rescue Algo::Docker::Error::NotFoundError
    @srv = nil
  end
  check_networks
end

Private Instance Methods

check_networks() click to toggle source
# File lib/algo/runner/apply.rb, line 25
def check_networks
  return true if @srv.blank? or @srv.spec.networks.blank?
  srv_networks = @srv.spec.networks.map { |n| { 'Target' => n.name } }
  unless srv_networks != @srv_spec['Networks']
    @srv_spec['Networks'] = @srv.spec.networks.map { |n| { 'Target' => n.id } }
    return true
  end
  raise ValidationError, 'changing network in service is not supported'
end