153 lines
5.7 KiB
SQL
153 lines
5.7 KiB
SQL
create table users
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
pubkey binary(32) not null,
|
|
created timestamp default current_timestamp,
|
|
email varchar(200),
|
|
contact_nip4 bit(1) not null,
|
|
contact_nip17 bit(1) not null,
|
|
contact_email bit(1) not null
|
|
);
|
|
create unique index ix_user_pubkey on users (pubkey);
|
|
create unique index ix_user_email on users (email);
|
|
create table user_ssh_key
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
name varchar(100) not null,
|
|
user_id integer unsigned not null,
|
|
created timestamp default current_timestamp,
|
|
key_data varchar(2048) not null,
|
|
|
|
constraint fk_ssh_key_user foreign key (user_id) references users (id)
|
|
);
|
|
create table vm_host_region
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
name varchar(100) not null,
|
|
enabled bit(1) not null
|
|
);
|
|
create table vm_host
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
kind smallint unsigned not null,
|
|
region_id integer unsigned not null,
|
|
name varchar(100) not null,
|
|
ip varchar(250) not null,
|
|
cpu bigint unsigned not null,
|
|
memory bigint unsigned not null,
|
|
enabled bit(1) not null,
|
|
api_token varchar(200) not null,
|
|
|
|
constraint fk_host_region foreign key (region_id) references vm_host_region (id)
|
|
);
|
|
create table vm_host_disk
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
host_id integer unsigned not null,
|
|
name varchar(50) not null,
|
|
size bigint unsigned not null,
|
|
kind smallint unsigned not null,
|
|
interface smallint unsigned not null,
|
|
enabled bit(1) not null,
|
|
|
|
constraint fk_host_disk_host foreign key (host_id) references vm_host (id)
|
|
);
|
|
create table vm_os_image
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
distribution smallint unsigned not null,
|
|
flavour varchar(50) not null,
|
|
version varchar(50) not null,
|
|
enabled bit(1) not null,
|
|
release_date timestamp not null,
|
|
url varchar(1024) not null
|
|
);
|
|
create unique index ix_vm_os_image on vm_os_image (distribution, flavour, version);
|
|
create table ip_range
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
cidr varchar(200) not null,
|
|
enabled bit(1) not null,
|
|
region_id integer unsigned not null,
|
|
|
|
constraint fk_ip_range_region foreign key (region_id) references vm_host_region (id)
|
|
);
|
|
create unique index ix_ip_range_cidr on ip_range (cidr);
|
|
create table vm_cost_plan
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
name varchar(200) not null,
|
|
created timestamp default current_timestamp,
|
|
amount integer unsigned not null,
|
|
currency varchar(4) not null,
|
|
interval_amount integer unsigned not null,
|
|
interval_type smallint unsigned not null
|
|
);
|
|
-- IE. VM Offers
|
|
create table vm_template
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
name varchar(200) not null,
|
|
enabled bit(1) not null,
|
|
created timestamp default current_timestamp,
|
|
expires timestamp,
|
|
cpu tinyint unsigned not null,
|
|
memory bigint unsigned not null,
|
|
disk_size bigint unsigned not null,
|
|
disk_type smallint unsigned not null,
|
|
disk_interface smallint unsigned not null,
|
|
cost_plan_id integer unsigned not null,
|
|
region_id integer unsigned not null,
|
|
|
|
constraint fk_template_cost_plan foreign key (cost_plan_id) references vm_cost_plan (id),
|
|
constraint fk_template_region foreign key (region_id) references vm_template (id)
|
|
);
|
|
-- An instance of a VM
|
|
create table vm
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
host_id integer unsigned not null,
|
|
user_id integer unsigned not null,
|
|
image_id integer unsigned not null,
|
|
template_id integer unsigned not null,
|
|
ssh_key_id integer unsigned not null,
|
|
created timestamp default current_timestamp,
|
|
expires timestamp not null,
|
|
cpu smallint unsigned not null,
|
|
memory bigint unsigned not null,
|
|
disk_size bigint unsigned not null,
|
|
disk_id integer unsigned not null,
|
|
|
|
constraint fk_vm_host foreign key (host_id) references vm_host (id),
|
|
constraint fk_vm_user foreign key (user_id) references users (id),
|
|
constraint fk_vm_image foreign key (image_id) references vm_os_image (id),
|
|
constraint fk_vm_host_disk_id foreign key (disk_id) references vm_host_disk (id),
|
|
constraint fk_vm_template_id foreign key (template_id) references vm_template (id),
|
|
constraint fk_vm_ssh_key_id foreign key (ssh_key_id) references user_ssh_key (id)
|
|
);
|
|
create table vm_ip_assignment
|
|
(
|
|
id integer unsigned not null auto_increment primary key,
|
|
vm_id integer unsigned not null,
|
|
ip_range_id integer unsigned not null,
|
|
ip varchar(255) not null,
|
|
|
|
constraint fk_vm_ip_assignment_vm foreign key (vm_id) references vm (id),
|
|
constraint fk_vm_ip_range foreign key (ip_range_id) references ip_range (id)
|
|
);
|
|
create unique index ix_vm_ip_assignment_ip on vm_ip_assignment (ip);
|
|
create table vm_payment
|
|
(
|
|
id binary(32) not null,
|
|
vm_id integer unsigned not null,
|
|
created timestamp default current_timestamp,
|
|
expires timestamp not null,
|
|
amount bigint unsigned not null,
|
|
invoice varchar(2048) not null,
|
|
time_value bigint unsigned not null,
|
|
is_paid bit(1) not null,
|
|
settle_index bigint unsigned,
|
|
|
|
constraint fk_vm_payment_vm foreign key (vm_id) references vm (id)
|
|
);
|
|
create unique index ix_vm_payment_id on vm_payment (id); |