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



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

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



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

def available_resources
  %w(postgres mysql mongodb redis)
end

#current_resource_provider_namesObject



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

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

#desired_resource_provider_namesObject



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

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



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

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



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

def resource
  run_command(%w[flynn resource], quiet: true).chomp
end

#resource_provider_keyObject



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

def resource_provider_key
  "FLYNN_#{ current_branch }_RESOURCES"
end

#resources_to_addObject



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

def resources_to_add
  desired_resource_provider_names - current_resource_provider_names
end

#resources_to_removeObject



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

def resources_to_remove
  current_resource_provider_names - desired_resource_provider_names
end

#set_resourcesObject



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

def set_resources
  add_resources
  remove_resources
end