Module: Satorix::CI::Deploy::Flynn::Resources

Included in:
Satorix::CI::Deploy::Flynn
Defined in:
lib/satorix/CI/deploy/flynn/resources.rb

Instance Method Summary collapse

Instance Method Details

#add_resourcesObject



8
9
10
11
12
13
14
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 8

def add_resources
  if resources_to_add.empty?
    log 'No resources to add.'
  else
    resources_to_add.each { |resource| run_command "flynn resource add #{ resource }" }
  end
end

#available_resourcesObject



17
18
19
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 17

def available_resources
  %w(postgres mysql mongodb redis)
end

#current_resource_provider_namesObject



22
23
24
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 22

def current_resource_provider_names
  resource.split("\n").drop(1).map(&:split).map(&:last)
end

#desired_resource_provider_namesObject



27
28
29
30
31
32
33
34
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 27

def desired_resource_provider_names
  names = ENV[resource_provider_key].to_s.split
  disallowed = names - available_resources
  unless disallowed.empty?
    log_error_and_abort("Invalid resource#{ 's' if disallowed.length > 1 }: #{ disallowed.join(' ') }")
  end
  names
end

#remove_resourcesObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 37

def remove_resources
  if resources_to_remove.empty?
    log 'No resources to remove.'
  else
    log "The following previously allocated resources are no longer defined in #{ resource_provider_key }:"
    log resources_to_remove.join(' ')
    log ''
    log 'To remove them, use the flynn resource command: https://flynn.io/docs/cli#resource'
  end
end

#resourceObject



49
50
51
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 49

def resource
  run_command('flynn resource', quiet: true).chomp
end

#resource_provider_keyObject



54
55
56
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 54

def resource_provider_key
  "FLYNN_#{ current_branch }_RESOURCES"
end

#resources_to_addObject



59
60
61
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 59

def resources_to_add
  desired_resource_provider_names - current_resource_provider_names
end

#resources_to_removeObject



64
65
66
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 64

def resources_to_remove
  current_resource_provider_names - desired_resource_provider_names
end

#set_resourcesObject



69
70
71
72
# File 'lib/satorix/CI/deploy/flynn/resources.rb', line 69

def set_resources
  add_resources
  remove_resources
end