Class: EY::InstanceAPIServer::Backups::ExampleCallback

Inherits:
Abstract::ExampleCallback show all
Defined in:
lib/ey_instance_api_server/backups/example_callback.rb

Instance Attribute Summary

Attributes inherited from Abstract::ExampleCallback

#base_url

Instance Method Summary collapse

Methods inherited from Abstract::ExampleCallback

#add_instance, #initialize, #token_for

Constructor Details

This class inherits a constructor from EY::InstanceAPIServer::Abstract::ExampleCallback

Instance Method Details

#add_database(instance_id, database_id) ⇒ Object



64
65
66
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 64

def add_database(instance_id, database_id)
  @instances[instance_id][database_id] ||= {}
end

#backups_for(instance_id, database_id) ⇒ Object



60
61
62
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 60

def backups_for(instance_id, database_id)
  @instances[instance_id][database_id]
end

#download_url_for(backup_id, part) ⇒ Object



56
57
58
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 56

def download_url_for(backup_id, part)
  "http://s3/GET/something/#{part}"
end

#finish_backup_for(instance_id, database_id, backup_id) ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 47

def finish_backup_for(instance_id, database_id, backup_id)
  backups = backups_for(instance_id, database_id)
  if backup_hash = backups[backup_id]
    unless backup_hash[:complete]
      backup_hash[:complete] = true
    end
  end
end

#list_backups_for(instance_id, database_id) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 7

def list_backups_for(instance_id, database_id)
  if backups_hash = backups_for(instance_id, database_id)
    backups = []
    backups_hash.map do |backup_id,backup_hash|
      extension = backup_hash[:extension]
      if backup_hash[:complete]
        download_urls = []
        backup_hash[:part_count].times do |part|
          download_urls << download_url_for(backup_id, part)
        end
        backups << EY::InstanceAPIServer.finished_backup(backup_id, database_id, extension, download_urls, Time.now - 1, Time.now)
      else
        backups << EY::InstanceAPIServer.pending_backup(backup_id, database_id, extension, Time.now)
      end
    end
    backups
  end
end

#start_backup_for(instance_id, database_id, extension, part_count) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 26

def start_backup_for(instance_id, database_id, extension, part_count)
  if backups = backups_for(instance_id, database_id)
    backup_id = backups.size.to_s
    upload_urls = []
    part_count = Integer(part_count)
    part_count.times do |part|
      upload_urls << upload_url_for(backup_id, part)
    end
    backup = EY::InstanceAPIServer.started_backup(backup_id, database_id, extension, upload_urls, Time.now)
    backups[backup_id] = {
      :extension  => extension,
      :part_count => part_count
    }
    backup
  end
end

#upload_url_for(backup_id, part) ⇒ Object



43
44
45
# File 'lib/ey_instance_api_server/backups/example_callback.rb', line 43

def upload_url_for(backup_id, part)
  "http://s3/PUT/something/#{part}"
end