# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.    

[Security]
authAndEncrypt = False

[AccessClusterManager]
#If username and password are left empty, user will be prompted for username and password on the command line.
username = clustermanagerusername
password = clustermanagerpassword

[AccessNodeManager]
#If username and password are left empty, user will be prompted for username and password on the command line.
username = nodemanagerusername
password = nodemanagerpassword

[AllowedUsers]
nodeManagerUser = nodemanagerusername
nodeManagerPassword = nodemanagerpassword
agentUser = agent
agentPassword = agent
clusterManagerUser = clustermanagerusername
clusterManagerPassword = clustermanagerpassword

# ClusterManager portion
[ClusterManager]
service = tashi.clustermanager.ClusterManagerService
data = tashi.clustermanager.data.GetentOverride
dfs = tashi.dfs.Vfs
publisher = tashi.messaging.GangliaPublisher
nodeManagerPort = 9883

[ClusterManagerService]
# Clustermanager hostname
host = localhost 
convertExceptions = True
port = 9882
expireHostTime = 30.0
allowDecayed = 30.0
allowMismatchedVersions = False
maxMemory = 8192
maxCores = 8
defaultNetwork = 0
allowDuplicateNames = False
;accountingHost = clustermanager
;accountingPort = 2228

[GetentOverride]
baseData = tashi.clustermanager.data.Pickled
fetchThreshold = 60.0

[LdapOverride]
baseData = tashi.clustermanager.data.Pickled
fetchThreshold = 3600.0
nameKey = sAMAccountName
idKey = msSFU30UidNumber
ldapCommand = ldapsearch -x -w password -h host -b searchbase -D binddn msSFU30LoginShell=* -z 0

[FromConfig]
#hostlist = /one/host/per/line
host1 = Host(d={'id':1,'name':'blade043'})
host2 = Host(d={'id':2,'name':'blade044'})
host3 = Host(d={'id':3,'name':'blade045'})
host4 = Host(d={'id':4,'name':'blade074'})
machineType1 = MachineType(d={'id':1,'name':'1c-512m','memory':512,'cores':1})
network1 = Network(d={'id':1,'name':'global'})
network2 = Network(d={'id':2,'name':'NAT'})
user1 = User(d={'id':1,'name':'mryan3'})

[Pickled]
file = /var/tmp/cm.dat

[SQL]
#uri = sqlite:///var/tmp/cm_sqlite.dat
uri = mysql://root@clustermanager/tashi
password = changeme

# Accounting portion
[Accounting]
publisher = tashi.messaging.GangliaPublisher

# NodeManger portion
[NodeManager]
dfs = tashi.dfs.Vfs
vmm = tashi.nodemanager.vmcontrol.Qemu
#vmm = tashi.nodemanager.vmcontrol.XenPV
service = tashi.nodemanager.NodeManagerService
publisher = tashi.messaging.GangliaPublisher

[NodeManagerService]
convertExceptions = True
port = 9883
registerHost = False
registerFrequency = 10.0
# Clustermanger hostname
clusterManagerHost = localhost 
clusterManagerPort = 9882
statsInterval = 0.0

[Qemu]
qemuBin = /usr/bin/kvm
pollDelay = 1.0
migrationRetries = 10
monitorTimeout = 60.0
migrateTimeout = 300.0
maxParallelMigrations = 10
useMigrateArgument = False
statsInterval = 0.0
scratchDir = /tmp
scratchVg = vgscratch
suspendHandler = gzip
resumeHandler = zcat
reservedMem = 512

[XenPV]
vmNamePrefix = tashi
transientdir = /tmp
defaultVmType = pygrub
#defaultVmType = kernel
#defaultKernel = /boot/vmlinuz-xen
#defaultRamdisk = /boot/initrd-xen
defaultDiskType=qcow

[Vfs]
prefix = /tmp

[LocalityService]
host = localityserverhostname
port = 9884
staticLayout = /location/of/layout/file

# Client configuration
[Client]
# Clustermanager hostname
clusterManagerHost = localhost 
clusterManagerPort = 9882
clusterManagerTimeout = 5.0

# Agent portion
[Agent]
publisher = tashi.messaging.GangliaPublisher

[Primitive]
#hook1 = tashi.agents.DhcpDns
scheduleDelay = 2.0
densePack = False

[MauiWiki]
#hook1 = tashi.agents.DhcpDns
refreshTime = 5
authuser = changeme
authkey = 1111
defaultJobTime = 8640000000

[DhcpDns]
dnsEnabled = True
dnsSecretKey = ABcdEf12GhIJKLmnOpQrsT==
dnsKeyName = name_of_dns_key_hostname
dnsServer = 1.2.3.4 53
dnsDomain = tashi.example.com
dnsExpire = 300
dhcpEnabled = True
dhcpServer = 1.2.3.4
# Host key name
dhcpKeyName = OMAPI
dhcpSecretKey = ABcdEf12GhIJKLmnOpQrsT==
#  ipRangeX - where X is the vlan number 
ipRange1 = 172.16.128.2-172.16.255.254
reverseDns = True
# Clustermanager hostname
clustermanagerhost = localhost
clustermanagerport = 9886

[GangliaPublisher]
dmax = 60
retry = 3600

# Logging stuff
# Switch the "keys" and "handlers" variables below to output log data to the publisher
[loggers]
keys = root	

[handlers]
#keys = consoleHandler,publisherHandler,fileHandler
keys = consoleHandler

[formatters]
keys = standardFormatter

[logger_root]
level = DEBUG
#handlers = consoleHandler,publisherHandler,fileHandler,syslogHandler
handlers = consoleHandler
propagate = 1
	
[handler_consoleHandler]
class = StreamHandler
level = NOTSET
formatter = standardFormatter
args = (sys.stdout,)

[handler_publisherHandler]
class = tashi.messaging.MessagingLogHandler
level = NOTSET
formatter = standardFormatter
args = ()

[handler_fileHandler]
class = FileHandler
level = NOTSET
formatter = standardFormatter
args = ("/var/log/nodemanager.log",)

[handler_syslogHandler]
class = handlers.SysLogHandler
level = NOTSET
formatter = standardFormatter
args = ('/dev/log')

[formatter_standardFormatter]
format=%(asctime)s [%(name)s:%(levelname)s] %(message)s
datefmt=
class=logging.Formatter

# Message Broker
[MessageBroker]
host = localhost
port = 1717

[AWS]
awsfile = /var/tmp/aws.dat
