forked from oscar.krause/fastapi-dls
created endpoints to delete origins and to delete a lease
This commit is contained in:
parent
922dc9f5a7
commit
2b7fed3381
@ -33,6 +33,10 @@ List registered origins.
|
|||||||
|-----------------|---------|--------------------------------------|
|
|-----------------|---------|--------------------------------------|
|
||||||
| `leases` | `false` | Include referenced leases per origin |
|
| `leases` | `false` | Include referenced leases per origin |
|
||||||
|
|
||||||
|
### `DELETE /-/origins`
|
||||||
|
|
||||||
|
Deletes all origins and their leases.
|
||||||
|
|
||||||
### `GET /-/leases?origin=false`
|
### `GET /-/leases?origin=false`
|
||||||
|
|
||||||
List current leases.
|
List current leases.
|
||||||
@ -41,6 +45,10 @@ List current leases.
|
|||||||
|-----------------|---------|-------------------------------------|
|
|-----------------|---------|-------------------------------------|
|
||||||
| `origin` | `false` | Include referenced origin per lease |
|
| `origin` | `false` | Include referenced origin per lease |
|
||||||
|
|
||||||
|
### `DELETE /-/lease/{lease_ref}`
|
||||||
|
|
||||||
|
Deletes an lease.
|
||||||
|
|
||||||
### `GET /client-token`
|
### `GET /client-token`
|
||||||
|
|
||||||
Generate client token, (see [installation](#installation)).
|
Generate client token, (see [installation](#installation)).
|
||||||
|
15
app/main.py
15
app/main.py
@ -15,7 +15,7 @@ from calendar import timegm
|
|||||||
from jose import jws, jwk, jwt
|
from jose import jws, jwk, jwt
|
||||||
from jose.constants import ALGORITHMS
|
from jose.constants import ALGORITHMS
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
from starlette.responses import StreamingResponse, JSONResponse, HTMLResponse
|
from starlette.responses import StreamingResponse, JSONResponse, HTMLResponse, Response
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
@ -88,6 +88,12 @@ async def _origins(request: Request, leases: bool = False):
|
|||||||
return JSONResponse(response)
|
return JSONResponse(response)
|
||||||
|
|
||||||
|
|
||||||
|
@app.delete('/-/origins')
|
||||||
|
async def _origins_delete(request: Request):
|
||||||
|
Origin.delete(db)
|
||||||
|
return Response(status_code=201)
|
||||||
|
|
||||||
|
|
||||||
@app.get('/-/leases')
|
@app.get('/-/leases')
|
||||||
async def _leases(request: Request, origin: bool = False):
|
async def _leases(request: Request, origin: bool = False):
|
||||||
session = sessionmaker(bind=db)()
|
session = sessionmaker(bind=db)()
|
||||||
@ -102,6 +108,13 @@ async def _leases(request: Request, origin: bool = False):
|
|||||||
return JSONResponse(response)
|
return JSONResponse(response)
|
||||||
|
|
||||||
|
|
||||||
|
@app.delete('/-/lease/{lease_ref}')
|
||||||
|
async def _lease_delete(request: Request, lease_ref: str):
|
||||||
|
if Lease.delete(db, lease_ref) == 1:
|
||||||
|
return Response(status_code=201)
|
||||||
|
raise HTTPException(status_code=404, detail='lease not found')
|
||||||
|
|
||||||
|
|
||||||
# venv/lib/python3.9/site-packages/nls_core_service_instance/service_instance_token_manager.py
|
# venv/lib/python3.9/site-packages/nls_core_service_instance/service_instance_token_manager.py
|
||||||
@app.get('/client-token')
|
@app.get('/client-token')
|
||||||
async def client_token():
|
async def client_token():
|
||||||
|
21
app/orm.py
21
app/orm.py
@ -54,13 +54,24 @@ class Origin(Base):
|
|||||||
session.flush()
|
session.flush()
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(engine: Engine, origins: ["Origin"] = None) -> int:
|
||||||
|
session = sessionmaker(bind=engine)()
|
||||||
|
if origins is None:
|
||||||
|
deletions = session.query(Origin).delete()
|
||||||
|
else:
|
||||||
|
deletions = session.query(Origin).filter(Origin.origin_ref in origins).delete()
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
return deletions
|
||||||
|
|
||||||
|
|
||||||
class Lease(Base):
|
class Lease(Base):
|
||||||
__tablename__ = "lease"
|
__tablename__ = "lease"
|
||||||
|
|
||||||
lease_ref = Column(CHAR(length=36), primary_key=True, nullable=False, index=True) # uuid4
|
lease_ref = Column(CHAR(length=36), primary_key=True, nullable=False, index=True) # uuid4
|
||||||
|
|
||||||
origin_ref = Column(CHAR(length=36), ForeignKey(Origin.origin_ref), nullable=False, index=True) # uuid4
|
origin_ref = Column(CHAR(length=36), ForeignKey(Origin.origin_ref, ondelete='CASCADE'), nullable=False, index=True) # uuid4
|
||||||
lease_created = Column(DATETIME(), nullable=False)
|
lease_created = Column(DATETIME(), nullable=False)
|
||||||
lease_expires = Column(DATETIME(), nullable=False)
|
lease_expires = Column(DATETIME(), nullable=False)
|
||||||
lease_updated = Column(DATETIME(), nullable=False)
|
lease_updated = Column(DATETIME(), nullable=False)
|
||||||
@ -127,6 +138,14 @@ class Lease(Base):
|
|||||||
session.close()
|
session.close()
|
||||||
return deletions
|
return deletions
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(engine: Engine, lease_ref: str) -> int:
|
||||||
|
session = sessionmaker(bind=engine)()
|
||||||
|
deletions = session.query(Lease).filter(Lease.lease_ref == lease_ref).delete()
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
return deletions
|
||||||
|
|
||||||
|
|
||||||
def init(engine: Engine):
|
def init(engine: Engine):
|
||||||
tables = [Origin, Lease]
|
tables = [Origin, Lease]
|
||||||
|
Loading…
Reference in New Issue
Block a user