summaryrefslogtreecommitdiffstats
path: root/src/dbi.h
blob: ab393e78b149e12b633c9988dab14aa6b894b322 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#ifndef __OG_DBI
#define __OG_DBI

#include <dbi/dbi.h>
#include <stdbool.h>
#include <sys/stat.h>

struct og_dbi_config {
	const char	*user;
	const char	*pass;
	const char	*ip;
	const char	*port;
	const char	*name;
};

struct og_dbi {
	dbi_conn	conn;
	dbi_inst	inst;
};

struct og_dbi *og_dbi_open(struct og_dbi_config *config);
void og_dbi_close(struct og_dbi *db);

#define OG_DB_COMPUTER_NAME_MAXLEN	100
#define OG_DB_CENTER_NAME_MAXLEN	100
#define OG_DB_ROOM_NAME_MAXLEN		100
#define OG_DB_ROOM_LOC_MAXLEN		255
#define OG_DB_SERIAL_NUMBER_MAXLEN	25
#define OG_DB_IMAGE_DESCRIPTION_MAXLEN 	250
#define OG_DB_REPO_NAME_MAXLEN 	250
#define OG_DB_PART_NAME_MAXLEN 	250
#define OG_DB_IMAGE_NAME_MAXLEN 50
#define OG_DB_FILESYSTEM_MAXLEN 16
#define OG_DB_NETDRIVER_MAXLEN	30
#define OG_DB_NETIFACE_MAXLEN	4
#define OG_DB_LIVEDIR_MAXLEN	50
#define OG_DB_INT8_MAXLEN	8
#define OG_DB_BOOT_MAXLEN	30
#define OG_DB_INT_MAXLEN	11
#define OG_DB_MAC_MAXLEN	15
#define OG_DB_IP_MAXLEN		15
#define OG_DB_SMALLINT_MAXLEN	6

struct og_image_legacy {
	char software_id[OG_DB_INT_MAXLEN + 1];
	char image_id[OG_DB_INT_MAXLEN + 1];
	char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
	char repo[OG_DB_IP_MAXLEN + 1];
	char part[OG_DB_SMALLINT_MAXLEN + 1];
	char disk[OG_DB_SMALLINT_MAXLEN + 1];
	char code[OG_DB_INT8_MAXLEN + 1];
};

struct og_image {
	char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
	char description[OG_DB_IMAGE_DESCRIPTION_MAXLEN + 1];
	uint64_t software_id;
	uint64_t center_id;
	uint64_t datasize;
	uint64_t group_id;
	uint64_t repo_id;
	uint64_t type;
	uint64_t id;
	struct stat image_stats;
};

struct og_legacy_partition {
	char partition[OG_DB_SMALLINT_MAXLEN + 1];
	char code[OG_DB_PART_NAME_MAXLEN + 1];
	char size[OG_DB_INT_MAXLEN + 1];
	char filesystem[OG_DB_FILESYSTEM_MAXLEN + 1];
	char format[2]; /* Format is a boolean 0 or 1 => length is 2 */
};

struct og_computer {
	unsigned int	procedure_id;
	unsigned int	hardware_id;
	unsigned int	server_id;
	unsigned int	repo_id;
	unsigned int	center;
	unsigned int	room;
	unsigned int	id;
	bool		maintenance;
	bool		remote;
	char		serial_number[OG_DB_SERIAL_NUMBER_MAXLEN + 1];
	char		netdriver[OG_DB_NETDRIVER_MAXLEN + 1];
	char		name[OG_DB_COMPUTER_NAME_MAXLEN + 1];
	char		netiface[OG_DB_NETIFACE_MAXLEN + 1];
	char		livedir[OG_DB_LIVEDIR_MAXLEN + 1];
	char		netmask[OG_DB_IP_MAXLEN + 1];
	char		boot[OG_DB_BOOT_MAXLEN + 1];
	char		mac[OG_DB_MAC_MAXLEN + 1];
	char		ip[OG_DB_IP_MAXLEN + 1];
};

struct og_room {
	uint32_t	center;
	uint32_t	group;
	char		location[OG_DB_ROOM_LOC_MAXLEN + 1];
	char		name[OG_DB_ROOM_NAME_MAXLEN + 1];
	char		gateway[OG_DB_IP_MAXLEN + 1];
	char		netmask[OG_DB_IP_MAXLEN + 1];
	char		ntp[OG_DB_IP_MAXLEN + 1];
	char		dns[OG_DB_IP_MAXLEN + 1];
	bool		remote;
};

struct og_repository {
	char	name[OG_DB_REPO_NAME_MAXLEN];
	char	ip[OG_DB_IP_MAXLEN];
};

struct in_addr;
int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer,
			     struct in_addr addr);
int og_dbi_add_image(struct og_dbi *dbi, const struct og_image *image);

int og_dbi_schema_update(void);

int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
			     char *repository_ip);

#endif