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)
- (BOOL)validateS3Keys:(NSError **)error;
- (NSArray *)s3BucketNames:(NSError **)error;
- (NSString *)s3BucketNameForRegion:(int)s3BucketRegion;
@end
@implementation ArqRestoreCommand
@ -80,10 +78,7 @@
if (![self validateS3Keys:error]) {
return NO;
}
NSArray *s3BucketNames = [self s3BucketNames:error];
if (s3BucketNames == nil) {
return NO;
}
NSArray *s3BucketNames = [S3Service s3BucketNamesForAccessKeyID:accessKey];
NSMutableArray *computerUUIDPaths = [NSMutableArray array];
for (NSString *s3BucketName in s3BucketNames) {
NSString *computerUUIDPrefix = [NSString stringWithFormat:@"/%@/", s3BucketName];
@ -172,20 +167,4 @@
}
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

View file

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

View file

@ -39,7 +39,8 @@
enum {
BUCKET_REGION_US_STANDARD = 0,
BUCKET_REGION_US_WEST = 1,
BUCKET_REGION_EU = 2
BUCKET_REGION_EU = 2,
BUCKET_REGION_AP_SOUTHEAST_1 = 3
};
@interface S3Service : NSObject {
@ -50,6 +51,8 @@ enum {
+ (NSString *)errorDomain;
+ (NSString *)serverErrorDomain;
+ (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;
- (NSArray *)s3BucketNames:(NSError **)error;
- (BOOL)s3BucketExists:(NSString *)s3BucketName;

View file

@ -69,12 +69,33 @@
return @"US Standard";
case BUCKET_REGION_US_WEST:
return @"US West";
case BUCKET_REGION_AP_SOUTHEAST_1:
return @"Asia Pacific (Singapore)";
case BUCKET_REGION_EU:
return @"EU";
}
NSAssert(NO, @"invalid S3 bucket region");
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 {
if (self = [super init]) {
sap = [theSAP retain];