AT&T Workflow Driver

This service implements the ONU and Subscriber management logic required by AT&T. It's also a good start if you need to implement a different logic to suit your use-case.

NOTE: This service depends on RCORDSubscriber and ONUDevice so make sure that the rcord-synchronizer and volt-synchronzier are running

How to install this service

Make sure you have xos-core, rcord-lite and kafka running.

To install from master:

helm install -n att-workflow xos-services/att-workflow-driver/

To install from the local docker daemon in minikube:

helm install -n att-workflow xos-services/att-workflow-driver/ -f examples/image-tag-candidate.yaml -f examples/imagePullPolicy-IfNotPresent.yaml

Service Instances State Machine

TopicEventActionsONU StateSubscriber StateMessage
onu.eventsstatus: activatedValidate against whitelist (successful)enabledawaiting-authONU has been validated
onu.eventsstatus: activatedValidate against whitelist (failed, missing)disabledawaiting-authONU not found in whitelist
onu.eventsstatus: activatedValidate against whitelist (failed, location)disabledawaiting-authONU activated in wrong location
onu.eventsstatus: disabledMark ONU as disabled and revoke subscriber authenticationdisabledawaiting-authONU has been disabled, revoked subscriber authentication
authentication.eventsauthenticationState: STARTEDUpdate subscriber statusenabledawaiting-authAuthentication started
authentication.eventsauthenticationState: REQUESTEDUpdate subscriber statusenabledawaiting-authAuthentication requested
authentication.eventsauthenticationState: APPROVEDUpdate subscriber statusenabledenabledAuthentication succeded
authentication.eventsauthenticationState: DENIEDUpdate subscriber statusenabledauth-failedAuthentication denied
dhcp.events--Update subscriber ip and mac addressenabledenabledDHCP information added

Events format

This events are generated by various applications running on top of ONOS and published on a Kafka bus. Here is the structure of the events and their topics.

onu.events

{
  "timestamp": "2018-09-11T01:00:49.506Z",
  "status": "activated", // or disabled
  "serial_number": "ALPHe3d1cfde", // ONU serial number
  "uni_port_id": 16, // uni port 
  "of_dpid": "of:000000000a5a0072" // OLT OpenFlow Id
}

authentication.events

{
  "timestamp": "2018-09-11T00:41:47.483Z",
  "deviceId": "of:000000000a5a0072", // OLT OpenFlow Id
  "portNumber": "16", // uni port
  "authenticationState": "STARTED" // REQUESTED, APPROVED, DENIED
}

dhcp.events

{
  "deviceId" : "of:000000000a5a0072",
  "portNumber" : "16",
  "macAddress" : "90:e2:ba:82:fa:81",
  "ipAddress" : "10.11.1.1"
}