#!/usr/bin/env python

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

from raxmon_cli.common import run_action
from raxmon_cli.parser import Parser
from raxmon_cli.waxeye import ParseError
from sys import exit, stdin, exc_info

OPTIONS = [
    [['--file'], {'dest': 'file', 'help': 'filename or - for stdin'}],
]

REQUIRED_OPTIONS = ['file']

def callback(driver, options, args, callback):
    fp = None
    try:
        if options.file == '-':
            fp = stdin
        else:
            fp = open(options.file, 'r')
        data = fp.read()
    except Exception:
        e = exc_info()[1]
        callback(str(e))
        exit(1)
    finally:
        if fp:
            fp.close()

    rv = Parser().parse(data)
    if isinstance(rv, ParseError):
        callback(str(rv))
        exit(1)
    else:
        callback('Success')

run_action(OPTIONS, REQUIRED_OPTIONS, 'alarms', 'validate', callback)
