Skip to content

Commit 9aaaab0

Browse files
author
prachi
committed
Merging awsapi-setup to master
1 parent f1fae9d commit 9aaaab0

15 files changed

+1104
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
USE cloudbridge;
2+
3+
-- This file (and cloudbridge_policy_alter.sql) can be applied to an existing cloudbridge
4+
-- database. It is used to manage defined bucket access policies.
5+
--
6+
SET foreign_key_checks = 0;
7+
8+
DROP TABLE IF EXISTS bucket_policies;
9+
10+
-- 1) Amazon S3 only allows one policy to be defined for a bucket.
11+
-- 2) The maximum size of a policy is 20 KB.
12+
-- 3) A bucket policy has to be able to exist even before the bucket itself (e.g., to
13+
-- support "CreateBucket" actions).
14+
--
15+
CREATE TABLE bucket_policies (
16+
ID BIGINT NOT NULL AUTO_INCREMENT,
17+
18+
BucketName VARCHAR(64) NOT NULL,
19+
OwnerCanonicalID VARCHAR(150) NOT NULL,
20+
21+
Policy VARCHAR(20000) NOT NULL, -- policies are written in JSON
22+
23+
PRIMARY KEY(ID)
24+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
25+
26+
SET foreign_key_checks = 1;
27+
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ANSI';
2+
3+
DROP DATABASE IF EXISTS cloudbridge;
4+
CREATE DATABASE cloudbridge;
5+
6+
GRANT ALL ON cloudbridge.* to cloud@`localhost` identified by 'cloud';
7+
GRANT ALL ON cloudbridge.* to cloud@`%` identified by 'cloud';
8+
9+
GRANT process ON *.* TO `cloud`@`localhost`;
10+
GRANT process ON *.* TO `cloud`@`%`;
11+
12+
COMMIT;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
USE cloudbridge;
2+
3+
ALTER TABLE shost ADD UNIQUE shost_uq_host(Host, HostType, ExportRoot);
4+
ALTER TABLE shost ADD CONSTRAINT FOREIGN KEY shost_fk_mhost_id(MHostID) REFERENCES mhost(ID);
5+
ALTER TABLE shost ADD INDEX shost_idx_mhost_id(MHostID);
6+
7+
ALTER TABLE sbucket ADD UNIQUE sbucket_uq_name(Name);
8+
ALTER TABLE sbucket ADD CONSTRAINT FOREIGN KEY sbucket_fk_shost_id(SHostID) REFERENCES shost(ID);
9+
ALTER TABLE sbucket ADD INDEX sbucket_idx_shost_id(SHostID);
10+
ALTER TABLE sbucket ADD INDEX sbucket_idx_owner_cid(OwnerCanonicalID);
11+
ALTER TABLE sbucket ADD INDEX sbucket_idx_create_time(CreateTime);
12+
13+
ALTER TABLE sobject ADD CONSTRAINT FOREIGN KEY sobject_fk_sbuckt_id(SBucketID) REFERENCES sbucket(ID) ON DELETE CASCADE;
14+
ALTER TABLE sobject ADD INDEX sobject_idx_bucket_id(SBucketID);
15+
ALTER TABLE sobject ADD INDEX sobject_idx_owner_cid(OwnerCanonicalID);
16+
ALTER TABLE sobject ADD UNIQUE sobject_uq_sbucket_id_name_key(SBucketID, NameKey);
17+
ALTER TABLE sobject ADD INDEX sobject_idx_create_time(CreateTime);
18+
19+
ALTER TABLE sobject_item ADD CONSTRAINT FOREIGN KEY sobject_item_fk_object_id(SObjectID) REFERENCES sobject(ID) ON DELETE CASCADE;
20+
ALTER TABLE sobject_item ADD INDEX sobject_item_idx_object_id(SObjectID);
21+
ALTER TABLE sobject_item ADD UNIQUE sobject_item_uq_sobject_id_version(SObjectID, Version);
22+
ALTER TABLE sobject_item ADD INDEX sobject_item_idx_create_time(CreateTime);
23+
ALTER TABLE sobject_item ADD INDEX sobject_item_idx_modify_time(LastModifiedTime);
24+
ALTER TABLE sobject_item ADD INDEX sobject_item_idx_access_time(LastAccessTime);
25+
ALTER TABLE sobject_item ADD INDEX sobject_item_idx_stored_size(StoredSize);
26+
27+
ALTER TABLE meta ADD UNIQUE meta_uq_target_name(Target, TargetID, Name);
28+
ALTER TABLE meta ADD INDEX meta_idx_target(Target, TargetID);
29+
30+
ALTER TABLE usercredentials ADD UNIQUE usercredentials_mappings1(AccessKey);
31+
ALTER TABLE usercredentials ADD UNIQUE usercredentials_mappings2(CertUniqueId);
32+
ALTER TABLE usercredentials ADD INDEX usercredentials_idx_access(AccessKey);
33+
ALTER TABLE usercredentials ADD INDEX usercredentials_idx_cert(CertUniqueId);
34+
35+
ALTER TABLE acl ADD INDEX acl_idx_target(Target, TargetID);
36+
ALTER TABLE acl ADD INDEX acl_idx_modify_time(LastModifiedTime);
37+
38+
ALTER TABLE mhost ADD UNIQUE mhost_uq_host(Host);
39+
ALTER TABLE mhost ADD INDEX mhost_idx_mhost_key(MHostKey);
40+
ALTER TABLE mhost ADD INDEX mhost_idx_heartbeat_time(LastHeartbeatTime);
41+
42+
ALTER TABLE mhost_mount ADD UNIQUE mhost_mnt_uq_mhost_shost(MHostID, SHostID);
43+
ALTER TABLE mhost_mount ADD CONSTRAINT FOREIGN KEY mhost_mnt_fk_mhost_id(MHostID) REFERENCES mhost(ID) ON DELETE CASCADE;
44+
ALTER TABLE mhost_mount ADD CONSTRAINT FOREIGN KEY mhost_mnt_fk_shost_id(SHostID) REFERENCES shost(ID) ON DELETE CASCADE;
45+
ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_mhost_id(MHostID);
46+
ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_shost_id(SHostID);
47+
ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_mount_time(LastMountTime);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
USE cloudbridge;
2+
3+
-- This file can be applied to an existing cloudbridge database. It is used
4+
-- to keep track of in progress multipart file uploads.
5+
--
6+
SET foreign_key_checks = 0;
7+
8+
DROP TABLE IF EXISTS multipart_uploads;
9+
DROP TABLE IF EXISTS multipart_meta;
10+
DROP TABLE IF EXISTS multipart_parts;
11+
12+
-- We need to keep track of the multipart uploads and all the parts of each upload until they
13+
-- are completed or aborted.
14+
-- The AccessKey is where we store the AWS account id
15+
--
16+
CREATE TABLE multipart_uploads (
17+
ID BIGINT NOT NULL AUTO_INCREMENT,
18+
19+
AccessKey VARCHAR(150) NOT NULL, -- this is the initiator of the request
20+
BucketName VARCHAR(64) NOT NULL,
21+
NameKey VARCHAR(255) NOT NULL,
22+
x_amz_acl VARCHAR(64) NULL,
23+
24+
CreateTime DATETIME,
25+
26+
PRIMARY KEY(ID)
27+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
28+
29+
-- We need to store all the meta data for an object being mutlipart uploaded
30+
-- UploadID is a foreign key to an entry in the mutipart_uploads table
31+
--
32+
CREATE TABLE multipart_meta (
33+
ID BIGINT NOT NULL AUTO_INCREMENT,
34+
35+
UploadID BIGINT NOT NULL,
36+
Name VARCHAR(64) NOT NULL,
37+
Value VARCHAR(256),
38+
39+
PRIMARY KEY(ID)
40+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
41+
42+
-- Each part of a multipart upload gets a row in this table
43+
-- UploadId is a foreign key to an entry in the mutipart_uploads table
44+
--
45+
CREATE TABLE multipart_parts (
46+
ID BIGINT NOT NULL AUTO_INCREMENT,
47+
48+
UploadID BIGINT NOT NULL,
49+
partNumber INT NOT NULL,
50+
MD5 VARCHAR(128),
51+
StoredPath VARCHAR(256), -- relative to mount point of the root
52+
StoredSize BIGINT NOT NULL DEFAULT 0,
53+
54+
CreateTime DATETIME,
55+
56+
PRIMARY KEY(ID)
57+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
58+
59+
SET foreign_key_checks = 1;
60+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
USE cloudbridge;
2+
3+
ALTER TABLE multipart_meta ADD CONSTRAINT FOREIGN KEY meta_uploads_id(UploadID) REFERENCES multipart_uploads(ID) ON DELETE CASCADE;
4+
ALTER TABLE multipart_parts ADD CONSTRAINT FOREIGN KEY part_uploads_id(UploadID) REFERENCES multipart_uploads(ID) ON DELETE CASCADE;
5+
ALTER TABLE multipart_parts ADD UNIQUE part_uploads_number(UploadId, partNumber);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
USE cloudbridge;
2+
3+
-- This file (and cloudbridge_offering_alter.sql) can be applied to an existing cloudbridge
4+
-- database. It is used to manage the mappings from the Amazon EC2 offering strings to
5+
-- cloudstack service offering identifers.
6+
--
7+
SET foreign_key_checks = 0;
8+
9+
DROP TABLE IF EXISTS offering_bundle;
10+
11+
-- AmazonEC2Offering - string name of an EC2 AMI capability (e.g. "m1.small")
12+
-- CloudStackOffering - string name of the cloud stack service offering identifer (e.g. "1" )
13+
--
14+
CREATE TABLE offering_bundle (
15+
ID INTEGER NOT NULL AUTO_INCREMENT,
16+
AmazonEC2Offering VARCHAR(100) NOT NULL,
17+
CloudStackOffering VARCHAR(20) NOT NULL,
18+
PRIMARY KEY(ID)
19+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
20+
21+
SET foreign_key_checks = 1;
22+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
USE cloudbridge;
2+
3+
ALTER TABLE offering_bundle ADD UNIQUE one_offering (AmazonEC2Offering);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
USE cloudbridge;
2+
3+
ALTER TABLE bucket_policies ADD UNIQUE one_policy_per_bucket(BucketName);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
USE cloudbridge;
2+
3+
SET foreign_key_checks = 0;
4+
5+
DROP TABLE IF EXISTS shost;
6+
DROP TABLE IF EXISTS mhost;
7+
DROP TABLE IF EXISTS mhost_mount;
8+
DROP TABLE IF EXISTS sbucket;
9+
DROP TABLE IF EXISTS sobject;
10+
DROP TABLE IF EXISTS sobject_item;
11+
DROP TABLE IF EXISTS meta;
12+
DROP TABLE IF EXISTS acl;
13+
DROP TABLE IF EXISTS usercredentials;
14+
15+
-- storage host
16+
CREATE TABLE shost (
17+
ID BIGINT NOT NULL AUTO_INCREMENT,
18+
19+
Host VARCHAR(128) NOT NULL,
20+
HostType INT NOT NULL DEFAULT 0, -- 0 : local, 1 : nfs
21+
ExportRoot VARCHAR(128) NOT NULL,
22+
23+
MHostID BIGINT, -- when host type is local, MHostID points to its owner management host
24+
25+
UserOnHost VARCHAR(64),
26+
UserPassword VARCHAR(128),
27+
PRIMARY KEY(ID)
28+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
29+
30+
-- management host
31+
CREATE TABLE mhost (
32+
ID BIGINT NOT NULL AUTO_INCREMENT,
33+
34+
MHostKey VARCHAR(128) NOT NULL, -- host key could be derived from MAC address or named configuration value
35+
Host VARCHAR(128), -- public host address for redirecting request from/to
36+
37+
Version VARCHAR(64),
38+
LastHeartbeatTime DATETIME,
39+
40+
PRIMARY KEY(ID)
41+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
42+
43+
CREATE TABLE mhost_mount (
44+
ID BIGINT NOT NULL AUTO_INCREMENT,
45+
MHostID BIGINT NOT NULL,
46+
SHostID BIGINT NOT NULL,
47+
48+
MountPath VARCHAR(256), -- local mount path
49+
LastMountTime DATETIME, -- null : unmounted, otherwise the mount location
50+
51+
PRIMARY KEY(ID)
52+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
53+
54+
CREATE TABLE sbucket (
55+
ID BIGINT NOT NULL AUTO_INCREMENT,
56+
57+
Name VARCHAR(64) NOT NULL,
58+
OwnerCanonicalID VARCHAR(150) NOT NULL,
59+
60+
SHostID BIGINT,
61+
62+
CreateTime DATETIME,
63+
64+
VersioningStatus INT NOT NULL DEFAULT 0, -- 0 : initial not set, 1 : enabled, 2 : suspended
65+
66+
PRIMARY KEY(ID)
67+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
68+
69+
CREATE TABLE sobject (
70+
ID BIGINT NOT NULL AUTO_INCREMENT,
71+
72+
SBucketID BIGINT NOT NULL,
73+
NameKey VARCHAR(255) NOT NULL,
74+
75+
OwnerCanonicalID VARCHAR(150) NOT NULL,
76+
NextSequence INT NOT NULL DEFAULT 1,
77+
DeletionMark VARCHAR (150),
78+
79+
CreateTime DATETIME,
80+
81+
PRIMARY KEY(ID)
82+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
83+
84+
CREATE TABLE sobject_item (
85+
ID BIGINT NOT NULL AUTO_INCREMENT,
86+
87+
SObjectID BIGINT NOT NULL,
88+
Version VARCHAR(64),
89+
90+
MD5 VARCHAR(128),
91+
StoredPath VARCHAR(256), -- relative to mount point of the root
92+
StoredSize BIGINT NOT NULL DEFAULT 0,
93+
94+
CreateTime DATETIME,
95+
LastModifiedTime DATETIME,
96+
LastAccessTime DATETIME,
97+
98+
PRIMARY KEY(ID)
99+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
100+
101+
CREATE TABLE meta (
102+
ID BIGINT NOT NULL AUTO_INCREMENT,
103+
104+
Target VARCHAR(64) NOT NULL,
105+
TargetID BIGINT NOT NULL,
106+
107+
Name VARCHAR(64) NOT NULL,
108+
Value VARCHAR(256),
109+
110+
PRIMARY KEY(ID)
111+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
112+
113+
CREATE TABLE acl (
114+
ID BIGINT NOT NULL AUTO_INCREMENT,
115+
116+
Target VARCHAR(64) NOT NULL,
117+
TargetID BIGINT NOT NULL,
118+
119+
GranteeType INT NOT NULL DEFAULT 0, -- 0 : Cloud service user, 1 : Cloud user community, 2: Public user community
120+
GranteeCanonicalID VARCHAR(150), -- make it big enought to hold a Cloud API access key
121+
122+
Permission INT NOT NULL DEFAULT 0, -- 0 : no permission, 1 : read, 2 : write, 4 : read_acl, 8 : write_acl
123+
GrantOrder INT NOT NULL DEFAULT 0,
124+
125+
CreateTime DATETIME,
126+
LastModifiedTime DATETIME,
127+
128+
PRIMARY KEY(ID)
129+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
130+
131+
-- each account has to have a separate <AccessKey,SecretKey>
132+
-- each account has to have a separate <CertUniqueID,AccessKey> mappings
133+
CREATE TABLE usercredentials (
134+
ID BIGINT NOT NULL AUTO_INCREMENT,
135+
136+
AccessKey VARCHAR(150) NOT NULL,
137+
SecretKey VARCHAR(150) NOT NULL,
138+
CertUniqueId VARCHAR(200),
139+
140+
PRIMARY KEY(ID)
141+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
142+
143+
SET foreign_key_checks = 1;
144+
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/usr/bin/env bash
2+
# deploy-db-bridge.sh -- deploys the cloudbridge database configuration.
3+
#
4+
# set -x
5+
6+
if [ ! -f cloudbridge_db.sql ]; then
7+
printf "Error: Unable to find cloudbridge_db.sql\n"
8+
exit 4
9+
fi
10+
11+
if [ ! -f cloudbridge_schema.sql ]; then
12+
printf "Error: Unable to find cloudbridge_schema.sql\n"
13+
exit 5
14+
fi
15+
16+
if [ ! -f cloudbridge_index.sql ]; then
17+
printf "Error: Unable to find cloudbridge_index.sql\n"
18+
exit 6;
19+
fi
20+
21+
echo "Recreating Database."
22+
mysql --user=root --password=$1 < cloudbridge_db.sql > /dev/null 2>/dev/null
23+
mysqlout=$?
24+
if [ $mysqlout -eq 1 ]; then
25+
printf "Please enter root password for MySQL.\n"
26+
mysql --user=root --password < cloudbridge_db.sql
27+
if [ $? -ne 0 ]; then
28+
printf "Error: Cannot execute cloudbridge_db.sql\n"
29+
exit 10
30+
fi
31+
elif [ $mysqlout -ne 0 ]; then
32+
printf "Error: Cannot execute cloudbridge_db.sql\n"
33+
exit 11
34+
fi
35+
36+
mysql --user=cloud --password=cloud < cloudbridge_schema.sql
37+
if [ $? -ne 0 ]; then
38+
printf "Error: Cannot execute cloudbridge_schema.sql\n"
39+
exit 11
40+
fi
41+
42+
mysql --user=cloud --password=cloud < cloudbridge_multipart.sql
43+
if [ $? -ne 0 ]
44+
then
45+
exit 1
46+
fi
47+
48+
echo "Creating Indice and Foreign Keys"
49+
mysql --user=cloud --password=cloud < cloudbridge_index.sql
50+
if [ $? -ne 0 ]; then
51+
printf "Error: Cannot execute cloudbridge_index.sql\n"
52+
exit 13
53+
fi
54+
55+
mysql --user=cloud --password=cloud < cloudbridge_multipart_alter.sql
56+
mysql --user=cloud --password=cloud < cloudbridge_bucketpolicy.sql
57+
mysql --user=cloud --password=cloud < cloudbridge_policy_alter.sql
58+
mysql --user=cloud --password=cloud < cloudbridge_offering.sql
59+
mysql --user=cloud --password=cloud < cloudbridge_offering_alter.sql

0 commit comments

Comments
 (0)