added ap-southeast-1 bucket region

This commit is contained in:
Stefan Reitshamer 2010-06-18 08:13:23 -04:00
parent faa8c0e2ad
commit ac79ae41ec
4 changed files with 27 additions and 23 deletions

View file

@ -42,8 +42,6 @@
@interface ArqRestoreCommand (internal) @interface ArqRestoreCommand (internal)
- (BOOL)validateS3Keys:(NSError **)error; - (BOOL)validateS3Keys:(NSError **)error;
- (NSArray *)s3BucketNames:(NSError **)error;
- (NSString *)s3BucketNameForRegion:(int)s3BucketRegion;
@end @end
@implementation ArqRestoreCommand @implementation ArqRestoreCommand
@ -80,10 +78,7 @@
if (![self validateS3Keys:error]) { if (![self validateS3Keys:error]) {
return NO; return NO;
} }
NSArray *s3BucketNames = [self s3BucketNames:error]; NSArray *s3BucketNames = [S3Service s3BucketNamesForAccessKeyID:accessKey];
if (s3BucketNames == nil) {
return NO;
}
NSMutableArray *computerUUIDPaths = [NSMutableArray array]; NSMutableArray *computerUUIDPaths = [NSMutableArray array];
for (NSString *s3BucketName in s3BucketNames) { for (NSString *s3BucketName in s3BucketNames) {
NSString *computerUUIDPrefix = [NSString stringWithFormat:@"/%@/", s3BucketName]; NSString *computerUUIDPrefix = [NSString stringWithFormat:@"/%@/", s3BucketName];
@ -172,20 +167,4 @@
} }
return YES; return YES;
} }
- (NSArray *)s3BucketNames:(NSError **)error {
return [NSArray arrayWithObjects:
[self s3BucketNameForRegion:BUCKET_REGION_US_STANDARD],
[self s3BucketNameForRegion:BUCKET_REGION_US_WEST],
[self s3BucketNameForRegion:BUCKET_REGION_EU],
nil];
}
- (NSString *)s3BucketNameForRegion:(int)s3BucketRegion {
NSString *regionSuffix = @"";
if (s3BucketRegion == BUCKET_REGION_US_WEST) {
regionSuffix = @".us-west-1";
} else if (s3BucketRegion == BUCKET_REGION_EU) {
regionSuffix = @".eu";
}
return [NSString stringWithFormat:@"%@.com.haystacksoftware.arq%@", [accessKey lowercaseString], regionSuffix];
}
@end @end

View file

@ -36,6 +36,7 @@
#import "ArqFolder.h" #import "ArqFolder.h"
static void printUsage(const char *exeName) { static void printUsage(const char *exeName) {
fprintf(stderr, "Usage:\n");
fprintf(stderr, "\t%s\n", exeName); fprintf(stderr, "\t%s\n", exeName);
fprintf(stderr, "\t%s /s3bucket/computerUUID/folderUUID\n", exeName); fprintf(stderr, "\t%s /s3bucket/computerUUID/folderUUID\n", exeName);
} }

View file

@ -39,7 +39,8 @@
enum { enum {
BUCKET_REGION_US_STANDARD = 0, BUCKET_REGION_US_STANDARD = 0,
BUCKET_REGION_US_WEST = 1, BUCKET_REGION_US_WEST = 1,
BUCKET_REGION_EU = 2 BUCKET_REGION_EU = 2,
BUCKET_REGION_AP_SOUTHEAST_1 = 3
}; };
@interface S3Service : NSObject { @interface S3Service : NSObject {
@ -50,6 +51,8 @@ enum {
+ (NSString *)errorDomain; + (NSString *)errorDomain;
+ (NSString *)serverErrorDomain; + (NSString *)serverErrorDomain;
+ (NSString *)displayNameForBucketRegion:(int)region; + (NSString *)displayNameForBucketRegion:(int)region;
+ (NSString *)s3BucketNameForAccessKeyID:(NSString *)theAccessKeyId region:(int)s3BucketRegion;
+ (NSArray *)s3BucketNamesForAccessKeyID:(NSString *)theAccessKeyId;
- (id)initWithS3AuthorizationProvider:(S3AuthorizationProvider *)theSAP useSSL:(BOOL)useSSL retryOnNetworkError:(BOOL)retry; - (id)initWithS3AuthorizationProvider:(S3AuthorizationProvider *)theSAP useSSL:(BOOL)useSSL retryOnNetworkError:(BOOL)retry;
- (NSArray *)s3BucketNames:(NSError **)error; - (NSArray *)s3BucketNames:(NSError **)error;
- (BOOL)s3BucketExists:(NSString *)s3BucketName; - (BOOL)s3BucketExists:(NSString *)s3BucketName;

View file

@ -69,12 +69,33 @@
return @"US Standard"; return @"US Standard";
case BUCKET_REGION_US_WEST: case BUCKET_REGION_US_WEST:
return @"US West"; return @"US West";
case BUCKET_REGION_AP_SOUTHEAST_1:
return @"Asia Pacific (Singapore)";
case BUCKET_REGION_EU: case BUCKET_REGION_EU:
return @"EU"; return @"EU";
} }
NSAssert(NO, @"invalid S3 bucket region"); NSAssert(NO, @"invalid S3 bucket region");
return nil; return nil;
} }
+ (NSString *)s3BucketNameForAccessKeyID:(NSString *)theAccessKeyID region:(int)s3BucketRegion {
NSString *regionSuffix = @"";
if (s3BucketRegion == BUCKET_REGION_US_WEST) {
regionSuffix = @".us-west-1";
} else if (s3BucketRegion == BUCKET_REGION_AP_SOUTHEAST_1) {
regionSuffix = @".ap-southeast-1";
} else if (s3BucketRegion == BUCKET_REGION_EU) {
regionSuffix = @".eu";
}
return [NSString stringWithFormat:@"%@.com.haystacksoftware.arq%@", [theAccessKeyID lowercaseString], regionSuffix];
}
+ (NSArray *)s3BucketNamesForAccessKeyID:(NSString *)theAccessKeyId {
return [NSArray arrayWithObjects:
[S3Service s3BucketNameForAccessKeyID:theAccessKeyId region:BUCKET_REGION_US_STANDARD],
[S3Service s3BucketNameForAccessKeyID:theAccessKeyId region:BUCKET_REGION_US_WEST],
[S3Service s3BucketNameForAccessKeyID:theAccessKeyId region:BUCKET_REGION_EU],
[S3Service s3BucketNameForAccessKeyID:theAccessKeyId region:BUCKET_REGION_AP_SOUTHEAST_1],
nil];
}
- (id)initWithS3AuthorizationProvider:(S3AuthorizationProvider *)theSAP useSSL:(BOOL)isUseSSL retryOnNetworkError:(BOOL)retry { - (id)initWithS3AuthorizationProvider:(S3AuthorizationProvider *)theSAP useSSL:(BOOL)isUseSSL retryOnNetworkError:(BOOL)retry {
if (self = [super init]) { if (self = [super init]) {
sap = [theSAP retain]; sap = [theSAP retain];