#!/usr/bin/env python
#
# Copyright 2017 the original author or authors.
#
# Licensed 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.
#

class Constants:

	SSH_SUBSYSTEM = "netconf"

	# Send message max size
	MAXSSHBUF = 1024 * 1024

	# Secure credentials directories
	# TODO:  In a production environment these locations require better
	# protection.  For now the user_passwords file is just a plain text file.
	KEYS_DIRECTORY = 'security/keys'
	CERTS_DIRECTORY = 'security/certificates'
	CLIENT_CRED_DIRECTORY = 'security/client_credentials'

	# Datastores
	RUNNING = "running"
	CANDIDATE = "candidate"
	STARTUP = "startup"

	# RPC - base netconf
	GET = "get"
	GET_CONFIG = "get-config"
	COPY_CONFIG = "copy-config"
	EDIT_CONFIG = "edit-config"
	DELETE_CONFIG = "delete-config"
	LOCK = "lock"
	UNLOCK = "unlock"
	CLOSE_SESSION = "close-session"
	KILL_SESSION = "kill-session"

	# Operations
	OPERATION = "operation"
	DEFAULT_OPERATION = "default-operation"
	MERGE = "merge"
	REPLACE = "replace"
	CREATE = "create"
	DELETE = "delete"
	NONE = "none"

    # Netconf namespaces
	NETCONF_BASE_10 = "urn:ietf:params:netconf:base:1.0"
	NETCONF_BASE_11 = "urn:ietf:params:netconf:base:1.1"
	NETCONF_MONITORING = "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"

	# XML
	XML_HEADER = """<?xml version="1.0" encoding="utf-8"?>"""

	# Capability xpath
	CAPABILITY_XPATH = "//nc:hello/nc:capabilities/nc:capability"
	RPC_XPATH = "/nc:rpc"

	NC_SOURCE="nc:source"
	SOURCE = "source"
	TARGET = "target"
	CONFIG = "config"
	

	TEST_OPTION = "test-option"
	TEST_THEN_SET = "test-then-set"
	SET = "set"

	ERROR_OPTION = "error-option"
	STOP_ON_ERROR = "stop-on-error"
	CONTINUE_ON_ERROR = "continue-on-error"
	ROLLBACK_ON_ERROR = "rollback-on-error"

	#tags
	NC = "nc"
	VOLTHA = 'voltha'
	NCM = "ncm"
	RPC = "rpc"
	RPC_REPLY = "rpc-reply"
	RPC_ERROR = "rpc-error"
	CAPABILITY = "capability"
	CAPABILITIES = "capabilities"
	HELLO = "hello"
	URL = "url"
	NC_FILTER="nc:filter"
	FILTER = "filter"
	SUBTREE = "subtree"
	XPATH = "xpath"
	OK = "ok"
	SESSION_ID = "session-id"
	MESSAGE_ID = "message-id"
	XMLNS = "xmlns"
	DELIMITER = "]]>]]>"

	NS_MAP = {
		'nc': 'urn:ietf:params:xml:ns:netconf:base:1.0',
		'voltha': 'urn:opencord:params:xml:ns:voltha:ietf-voltha',
		'ncm': 'urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring'
	}


