~kirkland/eucalyptus/label-metadata

« back to all changes in this revision

Viewing changes to util/data.h

  • Committer: graziano obertelli
  • Date: 2009-01-07 03:32:35 UTC
  • Revision ID: graziano@cs.ucsb.edu-20090107033235-oxhuexp18v8hg0pw
Tags: 1.4
from CVS

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef INCLUDE_DATA_H
 
2
#define INCLUDE_DATA_H
 
3
 
 
4
#include <pthread.h>
 
5
#include "eucalyptus.h"
 
6
 
 
7
#define CHAR_BUFFER_SIZE 512
 
8
 
 
9
typedef struct ncMetadata_t {
 
10
    char *correlationId;
 
11
    char *userId;
 
12
} ncMetadata;
 
13
 
 
14
typedef struct ncInstParams_t {
 
15
  int memorySize;
 
16
  int diskSize;
 
17
  int numberOfCores;
 
18
} ncInstParams;
 
19
 
 
20
typedef struct ncNetConf_t {
 
21
  int vlan;
 
22
  char publicMac[32], privateMac[32], publicIp[32], privateIp[32];
 
23
} ncNetConf;
 
24
 
 
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];
 
35
    
 
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 */
 
40
    int state;
 
41
    
 
42
    char keyName[CHAR_BUFFER_SIZE*4];
 
43
    char privateDnsName[CHAR_BUFFER_SIZE];
 
44
    char dnsName[CHAR_BUFFER_SIZE];
 
45
    int launchTime;
 
46
    int terminationTime;
 
47
    
 
48
    ncInstParams params;
 
49
    ncNetConf ncnet;
 
50
    pthread_t tcb;
 
51
} ncInstance;
 
52
 
 
53
 
 
54
typedef struct ncResource_t {
 
55
    char nodeStatus[CHAR_BUFFER_SIZE];
 
56
    int memorySizeMax;
 
57
    int memorySizeAvailable;
 
58
    int diskSizeMax;
 
59
    int diskSizeAvailable;
 
60
    int numberOfCoresMax;
 
61
    int numberOfCoresAvailable;
 
62
    char publicSubnets[CHAR_BUFFER_SIZE];
 
63
} ncResource;
 
64
 
 
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;
 
70
} bunchOfInstances;
 
71
 
 
72
typedef enum instance_error_codes_t {
 
73
    OUT_OF_MEMORY = 99,
 
74
    DUPLICATE,
 
75
    NOT_FOUND,
 
76
} instance_error_codes;
 
77
 
 
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);
 
84
 
 
85
ncMetadata * allocate_metadata(char *correlationId, char *userId);
 
86
void free_metadata(ncMetadata ** meta);
 
87
 
 
88
ncInstance * allocate_instance(char *instanceId, char *reservationId, 
 
89
        ncInstParams *params, 
 
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);
 
96
 
 
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);
 
103
 
 
104
#endif
 
105