ees_network_drive/schema.py (147 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License 2.0;
# you may not use this file except in compliance with the Elastic License 2.0.
#
"""schema module contains Connector configuration file schema.
"""
import datetime
from .constant import RFC_3339_DATETIME_FORMAT
def coerce_rfc_3339_date(input_date):
"""This function returns true if its argument is a valid RFC 3339 date."""
if input_date:
return datetime.datetime.strptime(input_date, RFC_3339_DATETIME_FORMAT)
return False
schema = {
'network_drive.domain': {
'required': True,
'type': 'string',
'empty': False
},
'network_drive.username': {
'required': True,
'type': 'string',
'empty': False
},
'network_drive.password': {
'required': True,
'type': 'string',
'empty': False
},
'network_drive.path': {
'required': True,
'type': 'string',
'empty': False
},
'network_drive.server_name': {
'required': True,
'type': 'string',
'empty': False
},
'network_drive.server_ip': {
'required': True,
'type': 'string',
'empty': False
},
'client_machine.name': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.api_key': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.source_id': {
'required': True,
'type': 'string',
'empty': False
},
'enterprise_search.host_url': {
'required': True,
'type': 'string',
'empty': False
},
'include': {
'nullable': True,
'type': 'dict',
'schema': {
'path_template': {
'nullable': True,
'type': 'list',
'schema': {
'type': 'string',
}
},
'size': {
'nullable': True,
'type': 'list',
'schema': {
'type': 'string',
'regex': '[><=!]=?([0-9]*)$',
}
},
}
},
'exclude': {
'nullable': True,
'type': 'dict',
'schema': {
'path_template': {
'nullable': True,
'type': 'list',
'schema': {
'type': 'string',
}
},
'size': {
'nullable': True,
'type': 'list',
'schema': {
'type': 'string',
'regex': '[><=!]=?([0-9]*)$'
}
}
}
},
'start_time': {
'required': False,
'type': 'datetime',
'max': datetime.datetime.utcnow(),
'default': '1970-01-01T00:00:00Z',
'coerce': coerce_rfc_3339_date
},
'end_time': {
'required': False,
'type': 'datetime',
'max': datetime.datetime.utcnow(),
'default': (datetime.datetime.utcnow()).strftime(RFC_3339_DATETIME_FORMAT),
'coerce': coerce_rfc_3339_date
},
'log_level': {
'required': False,
'type': 'string',
'default': 'INFO',
'allowed': ['DEBUG', 'INFO', 'WARNING', 'ERROR ']
},
'retry_count': {
'required': False,
'type': 'integer',
'default': 3,
'min': 1
},
'network_drives_sync_thread_count': {
'required': False,
'type': 'integer',
'default': 5,
'min': 1
},
'enterprise_search_sync_thread_count': {
'required': False,
'type': 'integer',
'default': 5,
'min': 1
},
'enable_document_permission': {
'required': False,
'type': 'boolean',
'default': True
},
'network_drive_enterprise_search.user_mapping': {
'required': False,
'type': 'string',
}
}