# NodeManger portion
# this file contains an example configuration for
# the node manager daemons running on every server

# 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.

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

[GangliaPublisher]
dmax = 60
retry = 3600

[formatters]
keys = standardFormatter

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

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

[handler_consoleHandler]
class = StreamHandler
level = NOTSET
formatter = standardFormatter
args = (sys.stdout,)

[loggers]
keys = root

[logger_root]
level = DEBUG
#handlers = consoleHandler,publisherHandler,fileHandler,syslogHandler
handlers = consoleHandler
propagate = 1

[Vfs]
prefix = /tmp

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

[NodeManagerService]
convertExceptions = True
port = 9883
registerHost = False
registerFrequency = 10.0
clusterManagerHost = localhost ; Clustermanager hostname
clusterManagerPort = 9882
statsInterval = 0.0
;accountingHost = clustermanager
;accountingPort = 2228

[Security]
authAndEncrypt = False

