#!/bin/bash
BIN_DIR=${BIN_DIR:-.}
# Tenants
ADMIN_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only create \
                                       tenant_name=admin`
DEMO_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only create \
                                      tenant_name=demo`
INVIS_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only create \
                                       tenant_name=invisible_to_admin`


# Users
ADMIN_USER=`$BIN_DIR/keystone-manage user --ks-id-only create \
                                          name=admin \
                                          "password=%ADMIN_PASSWORD%" \
                                          email=admin@example.com`
DEMO_USER=`$BIN_DIR/keystone-manage user --ks-id-only create \
                                         name=demo \
                                         "password=%ADMIN_PASSWORD%" \
                                         email=demo@example.com`

# Roles
ADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                          name=Admin`
MEMBER_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                           name=Member`
KEYSTONEADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                                  name=KeystoneAdmin`
KEYSTONESERVICE_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                                         name=KeystoneServiceAdmin`
SYSADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                             name=sysadmin`
NETADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
                                             name=netadmin`


# Add Roles to Users in Tenants

$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$ADMIN_ROLE \
                              user_id=$ADMIN_USER \
                              tenant_id=$ADMIN_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$MEMBER_ROLE \
                              user_id=$DEMO_USER \
                              tenant_id=$DEMO_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$SYSADMIN_ROLE \
                              user_id=$DEMO_USER \
                              tenant_id=$DEMO_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$NETADMIN_ROLE \
                              user_id=$DEMO_USER \
                              tenant_id=$DEMO_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$MEMBER_ROLE \
                              user_id=$DEMO_USER \
                              tenant_id=$INVIS_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$ADMIN_ROLE \
                              user_id=$ADMIN_USER \
                              tenant_id=$DEMO_TENANT

# TODO(termie): these two might be dubious
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$KEYSTONEADMIN_ROLE \
                              user_id=$ADMIN_USER \
                              tenant_id=$ADMIN_TENANT
$BIN_DIR/keystone-manage role add_user_to_tenant \
                              role_id=$KEYSTONESERVICE_ROLE \
                              user_id=$ADMIN_USER \
                              tenant_id=$ADMIN_TENANT

# Services
$BIN_DIR/keystone-manage service create \
                                 name=nova \
                                 service_type=compute \
                                 "description=Nova Compute Service"

$BIN_DIR/keystone-manage service create \
                                 name=ec2 \
                                 service_type=ec2 \
                                 "description=EC2 Compatibility Layer"

$BIN_DIR/keystone-manage service create \
                                 name=glance \
                                 service_type=image \
                                 "description=Glance Image Service"

$BIN_DIR/keystone-manage service create \
                                 name=keystone \
                                 service_type=identity \
                                 "description=Keystone Identity Service"
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
    $BIN_DIR/keystone-manage service create \
                                     name=swift \
                                     service_type=object-store \
                                     "description=Swift Service"
fi

#endpointTemplates
#$BIN_DIR/keystone-manage $* endpointTemplates add \
#      RegionOne nova
#      http://%SERVICE_HOST%:8774/v1.1/%tenant_id%
#      http://%SERVICE_HOST%:8774/v1.1/%tenant_id%
#      http://%SERVICE_HOST%:8774/v1.1/%tenant_id% 1 1
#$BIN_DIR/keystone-manage $* endpointTemplates add
#      RegionOne ec2
#      http://%SERVICE_HOST%:8773/services/Cloud
#      http://%SERVICE_HOST%:8773/services/Admin
#      http://%SERVICE_HOST%:8773/services/Cloud 1 1
#$BIN_DIR/keystone-manage $* endpointTemplates add
#      RegionOne glance
#      http://%SERVICE_HOST%:9292/v1
#      http://%SERVICE_HOST%:9292/v1
#      http://%SERVICE_HOST%:9292/v1 1 1
#$BIN_DIR/keystone-manage $* endpointTemplates add
#      RegionOne keystone
#      http://%SERVICE_HOST%:5000/v2.0
#      http://%SERVICE_HOST%:35357/v2.0
#      http://%SERVICE_HOST%:5000/v2.0 1 1
#if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
#    $BIN_DIR/keystone-manage $* endpointTemplates add
#        RegionOne swift
#        http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id%
#        http://%SERVICE_HOST%:8080/
#        http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id% 1 1
#fi

# Tokens
#$BIN_DIR/keystone-manage token add %SERVICE_TOKEN% admin admin 2015-02-05T00:00

# EC2 related creds - note we are setting the secret key to ADMIN_PASSWORD
# but keystone doesn't parse them - it is just a blob from keystone's
# point of view
#$BIN_DIR/keystone-manage credentials add admin EC2 'admin' '%ADMIN_PASSWORD%' admin || echo "no support for adding credentials"
#$BIN_DIR/keystone-manage credentials add demo EC2 'demo' '%ADMIN_PASSWORD%' demo || echo "no support for adding credentials"