add coord modify resource
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Torma Kristóf 2020-12-05 17:54:37 +01:00
parent 5e8f235857
commit 4a7bd11324
5 changed files with 39 additions and 6 deletions

View File

@ -11,7 +11,6 @@ data:
RELEASE_ID: kmlabz-k8s RELEASE_ID: kmlabz-k8s
RELEASEMODE: release RELEASEMODE: release
JWT_SECRET_KEY: hzukalkhsdgsbnakdjaksdghikyxbhhatzig JWT_SECRET_KEY: hzukalkhsdgsbnakdjaksdghikyxbhhatzig
REGISTER_DISABLED: "False"
SQLALCHEMY_DATABASE_URI: postgresql://username:password@server/database?sslmode=require SQLALCHEMY_DATABASE_URI: postgresql://username:password@server/database?sslmode=require
--- ---
apiVersion: apps/v1 apiVersion: apps/v1

View File

@ -15,7 +15,7 @@ from marshm import ma
from healthchecks import health_database_status from healthchecks import health_database_status
from resources import SignupApi, LoginApi, UsersApi, UserParameterApi, CreateIngestResource, CreateEncodeResource, \ from resources import SignupApi, LoginApi, UsersApi, UserParameterApi, CreateIngestResource, CreateEncodeResource, \
CreateRestreamResource, ManipulateStreamResource, GetAllStreamResources, ModifyEncodeResource, \ CreateRestreamResource, ManipulateStreamResource, GetAllStreamResources, ModifyEncodeResource, \
ModifyIngressResource, ModifyRestreamResource ModifyIngressResource, ModifyRestreamResource, CoordModifyResource
""" """
Main Flask RESTful API Main Flask RESTful API
@ -49,7 +49,6 @@ ma.init_app(app)
bcrypt.init_app(app) bcrypt.init_app(app)
jwtman.init_app(app) jwtman.init_app(app)
# api.add_resource(SampleResource, "/sample")
api.add_resource(SignupApi, '/api/auth/signup') api.add_resource(SignupApi, '/api/auth/signup')
api.add_resource(LoginApi, '/api/auth/login') api.add_resource(LoginApi, '/api/auth/login')
api.add_resource(UsersApi, '/api/users') api.add_resource(UsersApi, '/api/users')
@ -62,6 +61,7 @@ api.add_resource(GetAllStreamResources, '/api/objects/streamerobjects')
api.add_resource(ModifyEncodeResource, '/api/objects/streamerobjects/encode/<resourceid>') api.add_resource(ModifyEncodeResource, '/api/objects/streamerobjects/encode/<resourceid>')
api.add_resource(ModifyIngressResource, '/api/objects/streamerobjects/ingest/<resourceid>') api.add_resource(ModifyIngressResource, '/api/objects/streamerobjects/ingest/<resourceid>')
api.add_resource(ModifyRestreamResource, '/api/objects/streamerobjects/restream/<resourceid>') api.add_resource(ModifyRestreamResource, '/api/objects/streamerobjects/restream/<resourceid>')
api.add_resource(CoordModifyResource, '/api/objects/streamerobjects/coordmodify/<resourceid>')
health.add_check(health_database_status) health.add_check(health_database_status)
app.add_url_rule("/healthz", "healthcheck", view_func=lambda: health.run()) app.add_url_rule("/healthz", "healthcheck", view_func=lambda: health.run())

View File

@ -20,5 +20,3 @@ RELEASEMODE = os.environ.get("RELEASEMODE", "dev")
SQLALCHEMY_DATABASE_URI = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://") SQLALCHEMY_DATABASE_URI = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://")
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY", str(uuid4())) JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY", str(uuid4()))
REGISTER_DISABLED = os.getenv("REGISTER_DISABLED", "FALSE").upper() == "TRUE"

View File

@ -9,7 +9,7 @@ from flask import request, current_app, abort
from db import db from db import db
from models import VideonUser, StreamResource, StreamResourceTypeEnum, OutputUrls from models import VideonUser, StreamResource, StreamResourceTypeEnum, OutputUrls
from schemas import UserSchema, UserMetadataSchema, StreamResourceSchema, IngestInputSchema, EncodeInputSchema, \ from schemas import UserSchema, UserMetadataSchema, StreamResourceSchema, IngestInputSchema, EncodeInputSchema, \
RestreamInputSchema RestreamInputSchema, CoordInputSchema
from config import REGISTER_DISABLED from config import REGISTER_DISABLED
import listdiffer import listdiffer
from kuberclient import Kubectl from kuberclient import Kubectl
@ -526,5 +526,36 @@ class ModifyEncodeResource(Resource):
current_app.logger.warning(e) current_app.logger.warning(e)
abort(503, "could not remove neighbourhood") abort(503, "could not remove neighbourhood")
childurls = []
for child in encode.children:
childurls.append(child.url)
Kubectl(name=encode.id, resourcetype="encoder",
stream_key=encode.stream_key, encode_push_urls=str(childurls)).update_resource()
db.session.commit() db.session.commit()
return self.streamresourceschema.dump(encode), 200 return self.streamresourceschema.dump(encode), 200
class CoordModifyResource(Resource):
"""
See: https://swagger.kmlabz.com/?urls.primaryName=videON%20Backend#/backend/editCoords
"""
coordinputschema = CoordInputSchema(many=False)
streamresourceschema = StreamResourceSchema(many=False)
def put(self, resourceid: str):
body = request.get_json()
try:
coordobj = self.coordinputschema.load(body)
except Exception as e:
current_app.logger.warning(e)
abort(417, INVALID_JSON_SCHEMA_MSG)
resource = StreamResource.query.filter_by(id=resourceid).first_or_404()
resource.x = coordobj['x']
resource.y = coordobj['y']
db.session.commit()
return self.streamresourceschema.dump(resource), 200

View File

@ -65,6 +65,11 @@ class RestreamInputSchema(ma.Schema):
y = fields.Integer(required=True) y = fields.Integer(required=True)
class CoordInputSchema(ma.Schema):
x = fields.Integer(required=True)
y = fields.Integer(required=True)
class OutputUrlSchema(ma.SQLAlchemyAutoSchema): class OutputUrlSchema(ma.SQLAlchemyAutoSchema):
""" """
Marshmallow schema generated Marshmallow schema generated