5
#include "eucalyptus.h"
7
#define CHAR_BUFFER_SIZE 512
9
typedef struct ncMetadata_t {
14
typedef struct ncInstParams_t {
20
typedef struct ncNetConf_t {
22
char publicMac[32], privateMac[32], publicIp[32], privateIp[32];
25
typedef struct ncInstance_t {
26
char instanceId[CHAR_BUFFER_SIZE];
27
char imageId[CHAR_BUFFER_SIZE];
28
char imageURL[CHAR_BUFFER_SIZE];
29
char kernelId[CHAR_BUFFER_SIZE];
30
char kernelURL[CHAR_BUFFER_SIZE];
31
char ramdiskId[CHAR_BUFFER_SIZE];
32
char ramdiskURL[CHAR_BUFFER_SIZE];
33
char reservationId[CHAR_BUFFER_SIZE];
34
char userId[CHAR_BUFFER_SIZE];
36
/* state as reported to CC & CLC */
37
char stateName[CHAR_BUFFER_SIZE]; /* as string */
38
int stateCode; /* as int */
39
/* state as NC thinks of it */
42
char keyName[CHAR_BUFFER_SIZE*4];
43
char privateDnsName[CHAR_BUFFER_SIZE];
44
char dnsName[CHAR_BUFFER_SIZE];
54
typedef struct ncResource_t {
55
char nodeStatus[CHAR_BUFFER_SIZE];
57
int memorySizeAvailable;
59
int diskSizeAvailable;
61
int numberOfCoresAvailable;
62
char publicSubnets[CHAR_BUFFER_SIZE];
65
/* TODO: make this into something smarter than a linked list */
66
typedef struct bunchOfInstances_t {
67
ncInstance * instance;
68
int count; /* only valid on first node */
69
struct bunchOfInstances_t * next;
72
typedef enum instance_error_codes_t {
76
} instance_error_codes;
78
instance_error_codes add_instance (bunchOfInstances ** head, ncInstance * instance);
79
instance_error_codes remove_instance (bunchOfInstances ** head, ncInstance * instance);
80
instance_error_codes for_each_instance (bunchOfInstances ** headp, void (* function)(bunchOfInstances **, ncInstance *, void *), void *);
81
ncInstance * find_instance (bunchOfInstances **headp, char * instanceId);
82
ncInstance * get_instance (bunchOfInstances **head);
83
int total_instances (bunchOfInstances **head);
85
ncMetadata * allocate_metadata(char *correlationId, char *userId);
86
void free_metadata(ncMetadata ** meta);
88
ncInstance * allocate_instance(char *instanceId, char *reservationId,
90
char *imageId, char *imageURL,
91
char *kernelId, char *kernelURL,
92
char *ramdiskId, char *ramdiskURL,
93
char *stateName, int stateCode, char *userId,
94
ncNetConf *ncnet, char *keyName);
95
void free_instance (ncInstance ** inst);
97
ncResource * allocate_resource(char *nodeStatus,
98
int memorySizeMax, int memorySizeAvailable,
99
int diskSizeMax, int diskSizeAvailable,
100
int numberOfCoresMax, int numberOfCoresAvailable,
101
char *publicSubnets);
102
void free_resource(ncResource ** res);