Remove Swift storage adapter

This commit is contained in:
Basti 2022-05-13 13:07:11 +02:00
parent c9d69c706d
commit b56eb30180
Signed by: basti
GPG Key ID: 9F88009D31D99C72
6 changed files with 1 additions and 160 deletions

View File

@ -7,7 +7,6 @@ services:
- redis-server
before_script:
- cp config.yml.example.$BACKEND config.yml
- mkdir -p tmp && echo "swifttoken" > tmp/swift_token.txt
script: ruby spec/$BACKEND/*
branches:
only:
@ -22,6 +21,5 @@ notifications:
on_failure: always
env:
- BACKEND=s3
- BACKEND=swift
# Run on Docker infrastructure
sudo: false

View File

@ -106,6 +106,3 @@ DEPENDENCIES
sinatra
sinatra-contrib
webmock
BUNDLED WITH
1.16.0

View File

@ -1,18 +0,0 @@
development: &defaults
maintenance: false
swift: &swift_defaults
host: "https://swift.example.com"
redis:
host: localhost
port: 6379
test:
<<: *defaults
swift:
host: "https://swift.example.com"
staging:
<<: *defaults
production:
<<: *defaults

View File

@ -1,63 +0,0 @@
require "rest_client"
require "active_support/core_ext/time/conversions"
require "active_support/core_ext/numeric/time"
require "active_support/core_ext/hash"
require "remote_storage/rest_provider"
module RemoteStorage
class Swift
include RestProvider
private
# Add quotes around the ETag
def format_etag(etag)
%Q("#{etag}")
end
def base_url
@base_url ||= settings.swift["host"]
end
def container_url_for(user)
"#{base_url}/rs:documents:#{settings.environment.to_s}/#{user}"
end
def default_headers
{"x-auth-token" => swift_token}
end
def reload_swift_token
server.logger.debug "Reloading swift token. Old token: #{settings.swift_token}"
# Remove the line break from the token file. The line break that the
# token script is adding to the file was causing Sentry to reject the
# token field
settings.swift_token = File.read(swift_token_path).rstrip
settings.swift_token_loaded_at = Time.now
server.logger.debug "Reloaded swift token. New token: #{settings.swift_token}"
end
def swift_token_path
"tmp/swift_token.txt"
end
def swift_token
reload_swift_token if Time.now - settings.swift_token_loaded_at > 1800
settings.swift_token
end
def deal_with_unauthorized_requests(&block)
begin
block.call
rescue RestClient::Unauthorized => ex
Raven.capture_exception(
ex,
tags: { swift_token: settings.swift_token[0..19], # send the first 20 characters
swift_token_loaded_at: settings.swift_token_loaded_at }
)
server.halt 500
end
end
end
end

View File

@ -4,7 +4,6 @@ require "json"
require "sinatra/base"
require 'sinatra/config_file'
require "sinatra/reloader"
require "remote_storage/swift"
require "remote_storage/s3"
class LiquorCabinet < Sinatra::Base
@ -20,10 +19,6 @@ class LiquorCabinet < Sinatra::Base
register Sinatra::ConfigFile
set :environments, %w{development test production staging}
config_file 'config.yml'
if settings.respond_to? :swift
set :swift_token, File.read("tmp/swift_token.txt")
set :swift_token_loaded_at, Time.now
end
end
configure :development do
@ -130,9 +125,7 @@ class LiquorCabinet < Sinatra::Base
def storage
@storage ||= begin
if settings.respond_to? :swift
RemoteStorage::Swift.new(settings, self)
elsif settings.respond_to? :s3
if settings.respond_to? :s3
RemoteStorage::S3.new(settings, self)
else
puts <<-EOF

View File

@ -1,66 +0,0 @@
require_relative "../spec_helper"
describe "Swift provider" do
def container_url_for(user)
"#{app.settings.swift["host"]}/rs:documents:test/#{user}"
end
def storage_class
RemoteStorage::Swift
end
before do
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
to_return(status: 200, headers: { etag: "0815etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
# Write new content with an If-Match header (a new Etag is returned)
stub_request(:put, "#{container_url_for("phil")}/food/aguacate").
with(body: "aye").
to_return(status: 200, headers: { etag: "0915etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:put, "#{container_url_for("phil")}/public/shares/example.jpg").
to_return(status: 200, headers: { etag: '"0817etag"', content_type: "image/jpeg", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:put, "#{container_url_for("phil")}/public/shares/example_partial.jpg").
to_return(status: 200, headers: { etag: '"0817etag"', content_type: "image/jpeg", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:head, "#{container_url_for("phil")}/food/aguacate").
to_return(status: 200, headers: { last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:get, "#{container_url_for("phil")}/food/aguacate").
to_return(status: 200, body: "rootbody", headers: { etag: "0817etag", content_type: "text/plain; charset=utf-8" })
stub_request(:delete, "#{container_url_for("phil")}/food/aguacate").
to_return(status: 200, headers: { etag: "0815etag" })
stub_request(:get, "#{container_url_for("phil")}/public/shares/example.jpg").
to_return(status: 200, body: "", headers: { etag: '"0817etag"', content_type: "image/jpeg" })
stub_request(:get, "#{container_url_for("phil")}/public/shares/example_partial.jpg").
to_return(status: 206, body: "", headers: { etag: '"0817etag"', content_type: "image/jpeg", content_range: "bytes 0-16/128" })
# Write new content to check the metadata in Redis
stub_request(:put, "#{container_url_for("phil")}/food/banano").
with(body: "si").
to_return(status: 200, headers: { etag: "0815etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:put, "#{container_url_for("phil")}/food/banano").
with(body: "oh, no").
to_return(status: 200, headers: { etag: "0817etag", last_modified: "Fri, 04 Mar 2016 12:20:20 GMT" })
stub_request(:put, "#{container_url_for("phil")}/food/camaron").
to_return(status: 200, headers: { etag: "0816etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:delete, "#{container_url_for("phil")}/food/camaron").
to_return(status: 200, headers: { etag: "0816etag" })
stub_request(:put, "#{container_url_for("phil")}/food/desayunos/bolon").
to_return(status: 200, headers: { etag: "0817etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
stub_request(:delete, "#{container_url_for("phil")}/food/desayunos/bolon").
to_return(status: 200, headers: { etag: "0817etag" })
# objects in root dir
stub_request(:put, "#{container_url_for("phil")}/bamboo.txt").
to_return(status: 200, headers: { etag: "0818etag", last_modified: "Fri, 04 Mar 2016 12:20:18 GMT" })
# 404
stub_request(:head, "#{container_url_for("phil")}/food/steak").
to_return(status: 404)
stub_request(:get, "#{container_url_for("phil")}/food/steak").
to_return(status: 404)
stub_request(:delete, "#{container_url_for("phil")}/food/steak").
to_return(status: 404)
end
it_behaves_like 'a REST adapter'
end