summaryrefslogtreecommitdiff
path: root/mongodb/mongo-init-opendc-db.sh
blob: ed33e955ded57fd3fb06a30d021007f5a0bc85df (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
#!/bin/bash

echo 'Creating opendc user and db'

mongo opendc --host localhost \
        --port 27017 \
        -u $MONGO_INITDB_ROOT_USERNAME \
        -p $MONGO_INITDB_ROOT_PASSWORD \
        --authenticationDatabase admin \
        --eval "db.createUser({user: '$OPENDC_DB_USERNAME', pwd: '$OPENDC_DB_PASSWORD', roles:[{role:'dbOwner', db: '$OPENDC_DB'}]});"
MONGO_ROOT_CMD="mongo $OPENDC_DB --host localhost --port 27017 -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin"

#echo 'Creating opendc db schema...'
MONGO_CMD="mongo $OPENDC_DB -u $OPENDC_DB_USERNAME -p $OPENDC_DB_PASSWORD --authenticationDatabase $OPENDC_DB"
$MONGO_CMD --eval 'db.createCollection("environments", {
	validator: {
		$jsonSchema: {
			bsonType: "object",
			required: ["name"],
			properties: {
				name: {
					bsonType: "string",
					description: "The name of the environment i.e. Production, or Compute Cluster"
				},
				datacenters: {
					bsonType: "object",
					required: ["name, location, length, width, height"],
					properties: {
						name: {
							bsonType: "string",
							description: "The name of the datacenter i.e. eu-west-1, or Science Building"
						},
						location: {
							bsonType: "string",
							description: "The location of the datacenter i.e. Frankfurt, or De Boelelaan 1105"
						},
						length: {
							bsonType: "double",
							description: "The physical length of the datacenter, in centimetres"
						},
						width: {
							bsonType: "double",
							description: "The physical width of the datacenter, in centimetres"
						},
						height: {
							bsonType: "double",
							description: "The physical height of the datacenter, in centimetres"
						}
					}
				}
			}
		}
	}
});'