class MesosDeploy
Public Class Methods
new(release, file = nil)
click to toggle source
# File lib/mesos-deploy.rb, line 10 def initialize(release, file = nil) path = File.join(Dir.pwd, "mesos-deploy.yml") if !!file @config = YAML.load_file(file) elsif File.exists? (path) @config = YAML.load_file(path) else raise ArgumentError.new("No mesos-deploy.yml file found.") end if !valid_release?(release) raise ArgumentError.new("Invalid release number given.") end if !@config['repo'] raise ArgumentError.new("YML file given has no repo defined.") end @release = release @repo = @config['repo'] if @config['singularity_url'] @singularity_url = @config['singularity_url'] end if @config['marathons'] @marathon_url = @config['marathon']['url'] @marathon_user = @config['marathon']['user'] @marathon_password = @config['marathon']['password'] @marathons = @config['marathons'] end end
Public Instance Methods
deploy_singularity()
click to toggle source
# File lib/mesos-deploy.rb, line 41 def deploy_singularity path = File.join(Dir.pwd, 'singularity') Dir["#{path}/*.json"].each do |file| Singularity::Deployer.new(@singularity_url, file, @release).deploy end end
run()
click to toggle source
# File lib/mesos-deploy.rb, line 62 def run # singularity deploy if necessary if !!@singularity_url deploy_singularity end # marathon deploy if necessary docker_image = "#{@repo}:#{@release}" if !!@marathons @marathons.each do |app_id| cmd = "haile -R #{@marathon_url} -U #{@marathon_user} -P #{@marathon_password} docker_deploy -i #{app_id} -d #{docker_image}" system(cmd) end end # update mescal configuration if File.exists?(File.join(Dir.pwd, ".mescal.json")) update_mescal_config(docker_image) end end
update_mescal_config(image)
click to toggle source
# File lib/mesos-deploy.rb, line 48 def update_mescal_config(image) # Update mescal config file revision config = JSON.parse(File.read(".mescal.json")) config['image'] = image File.open(".mescal.json", 'w') { |config_file| config_file.puts(JSON.dump(config)) } puts "Updating .mescal.json".yellow system("git add .mescal.json && git commit -m \"update .mescal.json [skip build]\" && git push origin `git rev-parse --abbrev-ref HEAD`") end
valid_release?(release)
click to toggle source
# File lib/mesos-deploy.rb, line 58 def valid_release?(release) !!release && release =~ /r([0-9]*)/ end