| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- """Read models for the enterprise edge-gateway control plane."""
- from sqlalchemy.dialects.postgresql import ARRAY, JSONB, UUID
- from app import db
- from app.core.common.identifiers import new_governance_uid
- class EdgeGatewayEnrollment(db.Model):
- __tablename__ = "edge_gateway_enrollments"
- __table_args__ = {"schema": "public"}
- uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
- gateway_id = db.Column(UUID(as_uuid=False), nullable=False, unique=True)
- gateway_name = db.Column(db.String(200), nullable=False)
- environment = db.Column(db.String(20), nullable=False)
- network_zone = db.Column(db.String(120), nullable=False)
- policy_digest = db.Column(db.String(64), nullable=False)
- expected_certificate_sha256 = db.Column(db.String(64), nullable=False)
- allowed_control_hosts = db.Column(ARRAY(db.Text), nullable=False)
- allowed_proxy_hosts = db.Column(ARRAY(db.Text), nullable=False)
- token_hash = db.Column(db.String(64), nullable=False, unique=True)
- status = db.Column(db.String(20), nullable=False)
- expires_at = db.Column(db.DateTime(timezone=True), nullable=False)
- consumed_at = db.Column(db.DateTime(timezone=True))
- class EdgeGateway(db.Model):
- __tablename__ = "edge_gateways"
- __table_args__ = {"schema": "public"}
- uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
- name = db.Column(db.String(200), nullable=False)
- environment = db.Column(db.String(20), nullable=False)
- network_zone = db.Column(db.String(120), nullable=False)
- status = db.Column(db.String(20), nullable=False)
- current_generation = db.Column(db.Integer, nullable=False)
- policy_digest = db.Column(db.String(64), nullable=False)
- allowed_control_hosts = db.Column(ARRAY(db.Text), nullable=False)
- allowed_proxy_hosts = db.Column(ARRAY(db.Text), nullable=False)
- last_heartbeat_at = db.Column(db.DateTime(timezone=True))
- runtime_version = db.Column(db.String(80))
- safe_health_summary = db.Column(JSONB, nullable=False)
- class EdgeGatewayCredential(db.Model):
- __tablename__ = "edge_gateway_credentials"
- __table_args__ = {"schema": "public"}
- uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
- gateway_id = db.Column(UUID(as_uuid=False), nullable=False)
- generation = db.Column(db.Integer, nullable=False)
- credential_hash = db.Column(db.String(64), nullable=False, unique=True)
- certificate_sha256 = db.Column(db.String(64), nullable=False)
- status = db.Column(db.String(20), nullable=False)
- expires_at = db.Column(db.DateTime(timezone=True), nullable=False)
- class EdgeGatewayRotationRequest(db.Model):
- __tablename__ = "edge_gateway_rotation_requests"
- __table_args__ = {"schema": "public"}
- gateway_id = db.Column(UUID(as_uuid=False), primary_key=True)
- request_id = db.Column(db.String(255), primary_key=True)
- request_digest = db.Column(db.String(64), nullable=False)
- generation = db.Column(db.Integer, nullable=False)
- class EdgeGatewayTask(db.Model):
- __tablename__ = "edge_gateway_tasks"
- __table_args__ = {"schema": "public"}
- task_id = db.Column(db.String(255), primary_key=True)
- gateway_id = db.Column(UUID(as_uuid=False), nullable=False)
- idempotency_key = db.Column(db.String(255), nullable=False)
- contract = db.Column(JSONB, nullable=False)
- contract_digest = db.Column(db.String(64), nullable=False)
- authority = db.Column(JSONB, nullable=False)
- status = db.Column(db.String(24), nullable=False)
- result_summary = db.Column(JSONB)
- class EdgeGatewayEvent(db.Model):
- __tablename__ = "edge_gateway_events"
- __table_args__ = {"schema": "public"}
- event_id = db.Column(db.String(80), primary_key=True)
- gateway_id = db.Column(UUID(as_uuid=False), nullable=False)
- task_id = db.Column(db.String(255), nullable=False)
- classification = db.Column(db.String(40), nullable=False)
- contract = db.Column(JSONB, nullable=False)
- contract_digest = db.Column(db.String(64), nullable=False)
- ack = db.Column(JSONB, nullable=False)
- class EdgeGatewayRelease(db.Model):
- __tablename__ = "edge_gateway_releases"
- __table_args__ = {"schema": "public"}
- uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
- gateway_id = db.Column(UUID(as_uuid=False), nullable=False)
- version = db.Column(db.String(80), nullable=False)
- artifact_digest = db.Column(db.String(64), nullable=False)
- rollback_version = db.Column(db.String(80), nullable=False)
- request_id = db.Column(db.String(255), nullable=False)
- request_digest = db.Column(db.String(64), nullable=False)
- status = db.Column(db.String(24), nullable=False)
- safe_summary = db.Column(JSONB, nullable=False)
- artifact_name = db.Column(db.String(255), nullable=False)
- deadline_at = db.Column(db.DateTime(timezone=True), nullable=False)
- signature_algorithm = db.Column(db.String(20), nullable=False)
- key_id = db.Column(db.String(128), nullable=False)
- manifest_digest = db.Column(db.String(64), nullable=False)
- signature = db.Column(db.String(128), nullable=False)
- signed_manifest = db.Column(JSONB, nullable=False)
- class EdgeGatewayAudit(db.Model):
- __tablename__ = "edge_gateway_audits"
- __table_args__ = {"schema": "public"}
- uid = db.Column(UUID(as_uuid=False), primary_key=True, default=new_governance_uid)
- gateway_id = db.Column(UUID(as_uuid=False))
- event_type = db.Column(db.String(80), nullable=False)
- actor_uid = db.Column(UUID(as_uuid=False))
- success = db.Column(db.Boolean, nullable=False)
- safe_detail = db.Column(JSONB, nullable=False)
- failure_fingerprint = db.Column(db.String(64))
- window_started_at = db.Column(db.DateTime(timezone=True))
- class EdgeGatewayFailureWindow(db.Model):
- __tablename__ = "edge_gateway_failure_windows"
- __table_args__ = {"schema": "public"}
- failure_fingerprint = db.Column(db.String(64), primary_key=True)
- window_started_at = db.Column(db.DateTime(timezone=True), primary_key=True)
- gateway_id = db.Column(UUID(as_uuid=False))
- event_type = db.Column(db.String(80), nullable=False)
- occurrence_count = db.Column(db.Integer, nullable=False)
- first_seen_at = db.Column(db.DateTime(timezone=True), nullable=False)
- last_seen_at = db.Column(db.DateTime(timezone=True), nullable=False)
|