Module: EY::InstanceAPIServer

Defined in:
lib/ey_instance_api_server.rb,
lib/ey_instance_api_server/backups.rb,
lib/ey_instance_api_server/version.rb,
lib/ey_instance_api_server/services.rb,
lib/ey_instance_api_server/snapshots.rb,
lib/ey_instance_api_server/backups/rackapp.rb,
lib/ey_instance_api_server/services/rackapp.rb,
lib/ey_instance_api_server/snapshots/rackapp.rb,
lib/ey_instance_api_server/backups/example_callback.rb,
lib/ey_instance_api_server/abstract/example_callback.rb,
lib/ey_instance_api_server/services/example_callback.rb,
lib/ey_instance_api_server/snapshots/example_callback.rb

Defined Under Namespace

Modules: Abstract, Backups, Services, Snapshots

Constant Summary collapse

VERSION =
"0.1.5"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.callback_moduleObject

Returns the value of attribute callback_module.



121
122
123
# File 'lib/ey_instance_api_server.rb', line 121

def callback_module
  @callback_module
end

Class Method Details

.appObject



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/ey_instance_api_server.rb', line 107

def self.app
  Rack::Builder.app do
    map "/databases/" do
      run Backups.app
    end
    map "/volumes/" do
      run Snapshots.app
    end
    map "/services/" do
      run Services.app
    end
  end
end

.backups_url_for(database_id) ⇒ Object



50
51
52
# File 'lib/ey_instance_api_server.rb', line 50

def self.backups_url_for(database_id)
  URI.join(base_url, "databases/#{database_id}/backups").to_s
end

.base_urlObject



99
100
101
102
103
104
105
# File 'lib/ey_instance_api_server.rb', line 99

def self.base_url
  base_url = callback_module.base_url
  unless base_url.match(/\/$/)
    base_url += '/'
  end
  base_url
end

.finish_backup_for(instance_id, database_id, backup_id) ⇒ Object



58
59
60
# File 'lib/ey_instance_api_server.rb', line 58

def self.finish_backup_for(instance_id, database_id, backup_id)
  callback_module.finish_backup_for(instance_id, database_id, backup_id)
end

.finished_backup(backup_id, database_id, extension, download_urls, started_at, finished_at) ⇒ Object



82
83
84
85
86
87
88
89
# File 'lib/ey_instance_api_server.rb', line 82

def self.finished_backup(backup_id, database_id, extension, download_urls, started_at, finished_at)
  {
    "started_at" => started_at.to_i,
    "finished_at" => finished_at.to_i,
    "extension"   => extension,
    "download_urls" => download_urls
  }
end

.get_services_for(instance_id, app_name) ⇒ Object



12
13
14
# File 'lib/ey_instance_api_server.rb', line 12

def self.get_services_for(instance_id, app_name)
  callback_module.get_services_for(instance_id, app_name)
end

.list_backups_for(instance_id, database_id) ⇒ Object



62
63
64
# File 'lib/ey_instance_api_server.rb', line 62

def self.list_backups_for(instance_id, database_id)
  callback_module.list_backups_for(instance_id, database_id)
end

.list_snapshots_for(instance_id) ⇒ Object



35
36
37
# File 'lib/ey_instance_api_server.rb', line 35

def self.list_snapshots_for(instance_id)
  callback_module.list_snapshots_for(instance_id)
end

.pending_backup(backup_id, database_id, extension, started_at) ⇒ Object



75
76
77
78
79
80
# File 'lib/ey_instance_api_server.rb', line 75

def self.pending_backup(backup_id, database_id, extension, started_at)
  {
    "started_at" => started_at.to_i,
    "extension"  => extension,
  }
end

.perform_snapshot_for(instance_id, volume_id, snapshot_id) ⇒ Object



31
32
33
# File 'lib/ey_instance_api_server.rb', line 31

def self.perform_snapshot_for(instance_id, volume_id, snapshot_id)
  callback_module.perform_snapshots_for(instance_id, volume_id, snapshot_id)
end

.request_snapshots_for(instance_id) ⇒ Object



27
28
29
# File 'lib/ey_instance_api_server.rb', line 27

def self.request_snapshots_for(instance_id)
  callback_module.request_snapshots_for(instance_id)
end

.services_url_for(app_name) ⇒ Object



8
9
10
# File 'lib/ey_instance_api_server.rb', line 8

def self.services_url_for(app_name)
  URI.join(base_url, "services/app/", app_name).to_s
end

.snapshot_response(volume_id, snapshot_id, volume_type, created_at, state, progress) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/ey_instance_api_server.rb', line 39

def self.snapshot_response(volume_id, snapshot_id, volume_type, created_at, state, progress)
  {
    "volume_id" => volume_id,
    "volume_type" => volume_type,
    "snapshot_id"  => snapshot_id,
    "created_at" => created_at,
    "state" => state,
    "progress" => progress,
  }
end

.snapshots_base_urlObject



16
17
18
# File 'lib/ey_instance_api_server.rb', line 16

def self.snapshots_base_url
  URI.join(base_url, "volumes/all/snapshots").to_s
end

.snapshots_url_for_performing(instance_id, volume_id, snapshot_id, instance_token) ⇒ Object



20
21
22
23
24
25
# File 'lib/ey_instance_api_server.rb', line 20

def self.snapshots_url_for_performing(instance_id, volume_id, snapshot_id, instance_token)
  path = "volumes/#{volume_id}/snapshots/#{snapshot_id}/perform"+
         "?instance_id=#{CGI.escape(instance_id.to_s)}"+
         "&token=#{CGI.escape(instance_token.to_s)}"
  URI.join(base_url, path).to_s
end

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



54
55
56
# File 'lib/ey_instance_api_server.rb', line 54

def self.start_backup_for(instance_id, database_id, extension, part_count)
  callback_module.start_backup_for(instance_id, database_id, extension, part_count)
end

.started_backup(backup_id, database_id, extension, upload_urls, started_at) ⇒ Object



66
67
68
69
70
71
72
73
# File 'lib/ey_instance_api_server.rb', line 66

def self.started_backup(backup_id, database_id, extension, upload_urls, started_at)
  {
    "started_at"  => started_at.to_i,
    "extension"   => extension,
    "upload_urls" => upload_urls,
    'finish_url'  => "#{backups_url_for(database_id)}/#{backup_id}"
  }
end

.token_for(label) ⇒ Object



95
96
97
# File 'lib/ey_instance_api_server.rb', line 95

def self.token_for(label)
  callback_module.token_for label
end

.valid?(label, token) ⇒ Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/ey_instance_api_server.rb', line 91

def self.valid?(label, token)
  token_for(label) == token
end