Skip to content
Snippets Groups Projects
Commit 651a2d71 authored by Robert Latta's avatar Robert Latta
Browse files

added geant lambda routes

parent 4cada944
No related branches found
No related tags found
No related merge requests found
......@@ -398,6 +398,65 @@ def peer_info(address):
return Response(result, mimetype="application/json")
@routes.route("/infinera-lambda-info/"
"<source_equipment>/<interface>/<circuit_id>",
methods=['GET', 'POST'])
@common.require_accepts_json
def get_trap_metadata(source_equipment, interface, circuit_id):
# interface = interface.replace('-T', '-')
cache_key = 'ims-classifier-cache:infinera:%s:%s' % (
source_equipment, interface)
r = common.get_current_redis()
result = r.get(cache_key)
result = False
if result:
result = result.decode('utf-8')
else:
result = {
'locations': []
}
top_level_services = []
services = r.get(
'ims:interface_services:%s:%s' % (source_equipment, interface))
if services:
result['services'] = json.loads(services.decode('utf=8'))
for s in result['services']:
tls = get_top_level_services(s['id'], r)
if tls:
top_level_services.extend(tls)
if top_level_services:
result['related-services'] = top_level_services
for s in result['services']:
result['locations'] += \
_location_from_equipment(s['equipment'])
result['locations'] += \
_location_from_equipment(s['other_end_equipment'])
gl = r.get(f'ims:geant_lambdas:{circuit_id.lower()[:14]}')
if gl:
t_gl = json.loads(gl.decode('utf=8'))
t_gl['status'] = t_gl['status'].lower()
result['geant-lambda'] = t_gl
if not result:
return Response(
response="no available info for {} {}".format(
source_equipment, interface),
status=404,
mimetype="text/html")
result = json.dumps(result)
# cache this data for the next call
r.set(cache_key, result.encode('utf-8'))
return Response(result, mimetype="application/json")
@routes.route("/infinera-fiberlink-info/<ne_name_str>/<object_name_str>",
methods=['GET', 'POST'])
@common.require_accepts_json
......
......@@ -21,6 +21,11 @@ def flushdb():
# IMS routes
@routes.route("update-geant-lambdas-ims", methods=['GET', 'POST'])
def update_geant_lambdas_ims():
ims_worker.update_geant_lambdas.delay(use_current=True)
return Response('OK')
@routes.route("update-fibre-spans-ims", methods=['GET', 'POST'])
def update_fibre_spans_ims():
ims_worker.update_fibre_spans.delay(use_current=True)
......
......@@ -22,6 +22,28 @@ environment.setup_logging()
logger = logging.getLogger(__name__)
@app.task(base=InventoryTask, bind=True, name='update_geant_lambdas_ims')
@log_task_entry_and_exit
def update_geant_lambdas(self, use_current=False):
r = get_next_redis(InventoryTask.config)
rp = r.pipeline()
# scan with bigger batches, to mitigate network latency effects
for key in r.scan_iter('ims:geant_lambdas:*', count=1000):
rp.delete(key)
rp.execute()
c = InventoryTask.config["ims"]
ds = IMS(c['api'], c['username'], c['password'])
rp = r.pipeline()
for k, gl in ims_data.get_geant_lambdas(ds):
rp.set(
f'ims:geant_lambdas:{k}',
json.dumps(gl))
rp.execute()
@app.task(base=InventoryTask, bind=True, name='update_fibre_spans_ims')
@log_task_entry_and_exit
def update_fibre_spans(self, use_current=False):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment