#!python

"""set the islocked property of a node.

A node is locked by setting the islocked property. When a node is
locked, it cannot be copied to, moved or deleted. """


import logging
from vos.commonparser import CommonParser
import sys
import vos
from vos.vos import Node 
import os
import signal



def signal_handler(signal, frame):
    raise KeyboardInterrupt, "SIGINT signal handler"

signal.signal(signal.SIGINT, signal_handler)

parser = CommonParser()

parser.add_option("--lock", action="store_true", help="Lock the node")
parser.add_option("--unlock", action="store_true", help="unLock the node")

(opt, args) = parser.parse_args()
parser.process_informational_options()

logger = logging.getLogger()
logger.setLevel(parser.log_level)
logger.addHandler(logging.StreamHandler())

lock = None
if opt.lock:
   lock = 'true'
elif opt.unlock:
   lock = 'false'

exit_code = 0

try:
    client = vos.Client(vospace_certfile=opt.certfile,vospace_token=opt.token)
    node = client.getNode(args[0])
    if lock is not None:
        if node.changeProp(Node.ISLOCKED, lock) > 0:
            logger.info("setting lock to %s" % (lock))
            client.update(node)
    else:
        exit_code = ( node.props.get(Node.ISLOCKED,'false') == 'true' and 0 ) or -1

except KeyboardInterrupt:
    exit_code = -1
except Exception as e:
    logger.error(str(e))
    exit_code= -1

sys.exit(exit_code)
