source: ogServer-Git/src/dbi.h @ 52a38d3

Last change on this file since 52a38d3 was 52a38d3, checked in by Javier Sánchez Parra <jsanchez@…>, 23 months ago

#915 Use the repository id on image creation

POST /image/create has two modes, image creation and update. You can
find more information about the "creation" mode in commit:
d2f20d0be06617f421eecca111449d94672695eb

On image creation, use the id to identify repositories instead of the
IP. This is a preparative commit to the support of repositories with
several IPs.

On image update, "repository_id" field is not needed because the image
already has the repository assigned.

This commit maintains backward compatibility with the Web Console (old
web interface), because it only use the "update" mode of /image/create.

Request POST /create/image:
{

"clients": [

"192.168.56.11"

],
"disk": "1",
"partition": "1",
"name": "archlinux",
"repository_id": 1,
"id": "0",
"code": "131",
"description": "This is a test",
"group_id": 0,
"center_id": 1

}
Response 200 OK

  • Property mode set to 100644
File size: 3.0 KB
Line 
1#ifndef __OG_DBI
2#define __OG_DBI
3
4#include <dbi/dbi.h>
5#include <stdbool.h>
6#include <sys/stat.h>
7
8struct og_dbi_config {
9        const char      *user;
10        const char      *pass;
11        const char      *ip;
12        const char      *port;
13        const char      *name;
14};
15
16struct og_dbi {
17        dbi_conn        conn;
18        dbi_inst        inst;
19};
20
21struct og_dbi *og_dbi_open(struct og_dbi_config *config);
22void og_dbi_close(struct og_dbi *db);
23
24#define OG_DB_COMPUTER_NAME_MAXLEN      100
25#define OG_DB_CENTER_NAME_MAXLEN        100
26#define OG_DB_ROOM_NAME_MAXLEN          100
27#define OG_DB_ROOM_LOC_MAXLEN           255
28#define OG_DB_SERIAL_NUMBER_MAXLEN      25
29#define OG_DB_IMAGE_DESCRIPTION_MAXLEN  250
30#define OG_DB_PART_NAME_MAXLEN  250
31#define OG_DB_IMAGE_NAME_MAXLEN 50
32#define OG_DB_FILESYSTEM_MAXLEN 16
33#define OG_DB_NETDRIVER_MAXLEN  30
34#define OG_DB_NETIFACE_MAXLEN   4
35#define OG_DB_LIVEDIR_MAXLEN    50
36#define OG_DB_INT8_MAXLEN       8
37#define OG_DB_BOOT_MAXLEN       30
38#define OG_DB_INT_MAXLEN        11
39#define OG_DB_MAC_MAXLEN        15
40#define OG_DB_IP_MAXLEN         15
41#define OG_DB_SMALLINT_MAXLEN   6
42
43struct og_image_legacy {
44        char software_id[OG_DB_INT_MAXLEN + 1];
45        char image_id[OG_DB_INT_MAXLEN + 1];
46        char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
47        char repo[OG_DB_IP_MAXLEN + 1];
48        char part[OG_DB_SMALLINT_MAXLEN + 1];
49        char disk[OG_DB_SMALLINT_MAXLEN + 1];
50        char code[OG_DB_INT8_MAXLEN + 1];
51};
52
53struct og_image {
54        char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
55        char description[OG_DB_IMAGE_DESCRIPTION_MAXLEN + 1];
56        char repo_ip[OG_DB_IP_MAXLEN + 1];
57        uint64_t software_id;
58        uint64_t center_id;
59        uint64_t datasize;
60        uint64_t group_id;
61        uint64_t repo_id;
62        uint64_t type;
63        uint64_t id;
64        struct stat image_stats;
65};
66
67struct og_legacy_partition {
68        char partition[OG_DB_SMALLINT_MAXLEN + 1];
69        char code[OG_DB_PART_NAME_MAXLEN + 1];
70        char size[OG_DB_INT_MAXLEN + 1];
71        char filesystem[OG_DB_FILESYSTEM_MAXLEN + 1];
72        char format[2]; /* Format is a boolean 0 or 1 => length is 2 */
73};
74
75struct og_computer {
76        unsigned int    procedure_id;
77        unsigned int    hardware_id;
78        unsigned int    repo_id;
79        unsigned int    center;
80        unsigned int    room;
81        unsigned int    id;
82        bool            maintenance;
83        bool            remote;
84        char            serial_number[OG_DB_SERIAL_NUMBER_MAXLEN + 1];
85        char            netdriver[OG_DB_NETDRIVER_MAXLEN + 1];
86        char            name[OG_DB_COMPUTER_NAME_MAXLEN + 1];
87        char            netiface[OG_DB_NETIFACE_MAXLEN + 1];
88        char            livedir[OG_DB_LIVEDIR_MAXLEN + 1];
89        char            netmask[OG_DB_IP_MAXLEN + 1];
90        char            boot[OG_DB_BOOT_MAXLEN + 1];
91        char            mac[OG_DB_MAC_MAXLEN + 1];
92        char            ip[OG_DB_IP_MAXLEN + 1];
93};
94
95struct og_room {
96        uint32_t        center;
97        uint32_t        group;
98        char            location[OG_DB_ROOM_LOC_MAXLEN + 1];
99        char            name[OG_DB_ROOM_NAME_MAXLEN + 1];
100        char            gateway[OG_DB_IP_MAXLEN + 1];
101        char            netmask[OG_DB_IP_MAXLEN + 1];
102        char            ntp[OG_DB_IP_MAXLEN + 1];
103        char            dns[OG_DB_IP_MAXLEN + 1];
104        bool            remote;
105};
106
107struct in_addr;
108int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer,
109                             struct in_addr addr);
110int og_dbi_add_image(struct og_dbi *dbi, const struct og_image *image);
111
112int og_dbi_schema_update(void);
113
114int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
115                             char *repository_ip);
116
117#endif
Note: See TracBrowser for help on using the repository browser.