5 // Created by Mike Mayo on 10/1/10.
6 // The OpenStack project is provided under the Apache 2.0 license.
9 #import <Foundation/Foundation.h>
13 @class AccountManager;
15 @interface OpenStackAccount : NSObject <NSCoding, NSCopying> {
17 id getServersObserver;
19 id getFlavorsObserver;
21 BOOL serversUnarchived;
23 NSString *sharingAccount;
28 @property (nonatomic, assign) BOOL hasBeenRefreshed;
29 @property (nonatomic, retain) NSString *uuid;
30 @property (nonatomic, retain) Provider *provider;
31 @property (nonatomic, retain) NSString *username;
32 @property (nonatomic, retain) NSString *apiKey;
33 @property (nonatomic, retain) NSString *projectId;
34 @property (nonatomic, retain) NSString *authToken;
35 @property (nonatomic, retain) NSMutableDictionary *images;
36 @property (nonatomic, retain) NSDictionary *flavors;
37 @property (nonatomic, retain) NSMutableDictionary *servers;
38 @property (nonatomic, retain) NSMutableDictionary *serversByPublicIP;
39 @property (nonatomic, retain) NSURL *hostURL;
40 @property (nonatomic, retain) NSURL *serversURL;
41 @property (nonatomic, retain) NSURL *filesURL;
42 @property (nonatomic, retain) NSURL *pithosPublicLinkURLPrefix;
43 @property (nonatomic, retain) NSURL *pithosLoginURLPrefix;
44 @property (nonatomic, retain) NSURL *cdnURL;
45 @property (nonatomic, retain) NSArray *rateLimits;
46 @property (nonatomic, retain) AccountManager *manager;
47 @property (nonatomic, retain) NSString *lastUsedFlavorId;
48 @property (nonatomic, retain) NSString *lastUsedImageId;
49 @property (nonatomic, assign) NSInteger containerCount;
50 @property (nonatomic, assign) unsigned long long totalBytesUsed;
51 @property (nonatomic, assign) unsigned long long quota;
52 @property (nonatomic, retain) NSMutableDictionary *containers;
53 @property (nonatomic, assign) BOOL flaggedForDelete;
54 @property (nonatomic, retain) NSString *apiVersion;
55 @property (nonatomic, assign) BOOL shared;
56 @property (nonatomic, retain) NSString *sharingAccount;
58 // this is a dictionary of dictionaries:
59 // { "endpoint1": { "123": { ... }, "456": { ... } },
60 // "endpoint2": { "789": { ... }, "321": { ... } }}
61 @property (nonatomic, retain) NSMutableDictionary *loadBalancers;
62 @property (nonatomic, retain) NSMutableArray *lbProtocols;
64 + (NSArray *)accounts;
66 + (void)persist:(NSArray *)accountArray;
67 - (void)refreshCollections;
68 - (NSArray *)loadBalancerURLs;
69 - (NSArray *)loadBalancerRegions;
71 - (NSString *)loadBalancerEndpointForRegion:(NSString *)region;
72 - (NSString *)loadBalancerRegionForEndpoint:(NSString *)endpoint;
73 - (NSString *)accountNumber;
75 - (NSArray *)sortedServers;
76 - (NSArray *)sortedImages;
77 - (NSArray *)sortedFlavors;
78 - (NSArray *)sortedRateLimits;
79 - (NSArray *)sortedContainers;
80 - (NSArray *)sortedLoadBalancers;
81 - (NSArray *)pithosSortedContainers;