Add pydantic models for config and check info
This commit is contained in:
		
							parent
							
								
									cc2c0e492b
								
							
						
					
					
						commit
						d9b04b9468
					
				
					 2 changed files with 64 additions and 1 deletions
				
			
		
							
								
								
									
										3
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								setup.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
"""
 | 
			
		||||
Setup file for the web stats collector.
 | 
			
		||||
Setup file for the website checker.
 | 
			
		||||
"""
 | 
			
		||||
from setuptools import setup  # type: ignore
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ setup(
 | 
			
		|||
    install_requires=[
 | 
			
		||||
        'aiokafka==0.6.0',
 | 
			
		||||
        'asyncpg==0.21.0',
 | 
			
		||||
        'pydantic==1.6.1',
 | 
			
		||||
        'PyYAML==5.3.1',
 | 
			
		||||
        'requests==2.24.0',
 | 
			
		||||
    ],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										62
									
								
								src/webstat/models.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/webstat/models.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
# pylint: disable=too-few-public-methods
 | 
			
		||||
"""
 | 
			
		||||
Schemas that are used in all modules. This module contains classes for:
 | 
			
		||||
 | 
			
		||||
- Configuring the ``chweb.collector.Collector``.
 | 
			
		||||
- Configuring the ``chweb.consumer.Consumer``.
 | 
			
		||||
- The schema for the stats being sent in the Kafka topic.
 | 
			
		||||
"""
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from typing import List, Optional
 | 
			
		||||
from pydantic import BaseModel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Check(BaseModel):
 | 
			
		||||
    """
 | 
			
		||||
    Information for a website check request.
 | 
			
		||||
    """
 | 
			
		||||
    domain: str = ""
 | 
			
		||||
    regex: Optional[str] = None
 | 
			
		||||
    regex_matches: Optional[bool] = None
 | 
			
		||||
    request_time: datetime = datetime.now()
 | 
			
		||||
    response_time: int = 0
 | 
			
		||||
    status: int = 0
 | 
			
		||||
    url: str = ""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class KafkaConfig(BaseModel):
 | 
			
		||||
    """
 | 
			
		||||
    Kafka broker configuration.
 | 
			
		||||
    """
 | 
			
		||||
    servers: List[str] = ["localhost:9992"]
 | 
			
		||||
    topic: str = "sample"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PostgresConfig(BaseModel):
 | 
			
		||||
    """
 | 
			
		||||
    PostgreSQL server configuration.
 | 
			
		||||
    """
 | 
			
		||||
    dbhost: str = "localhost"
 | 
			
		||||
    dbport: int = 5432
 | 
			
		||||
    dbname: str = "chweb"
 | 
			
		||||
    dbuser: str = "vladan"
 | 
			
		||||
    dbpass: str = ""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SiteConfig(BaseModel):
 | 
			
		||||
    """
 | 
			
		||||
    Single website configuration.
 | 
			
		||||
    """
 | 
			
		||||
    url: str = "https://example.com"
 | 
			
		||||
    regex: str = "domain"
 | 
			
		||||
    check_interval: int = 5
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Config(BaseModel):
 | 
			
		||||
    """
 | 
			
		||||
    Main application configuration. Same for the checker and the kafka
 | 
			
		||||
    consumer / postgres writer for simplicity while deploying.
 | 
			
		||||
    """
 | 
			
		||||
    kafka: KafkaConfig = KafkaConfig()
 | 
			
		||||
    postgres: PostgresConfig = PostgresConfig()
 | 
			
		||||
    sites: List[SiteConfig] = []
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue