OpenDaylight Carbon에 의해 제어되는 openvswitch (v2.5.2)가 설치된 미니 네트워크 (v2.2.2)가 있습니다. 내 응용 프로그램은 OpenDaylight karaf 기능입니다. 응용 프로그램은 그룹 테이블 (유형 = all)에 대한 플로우 (멀티 캐스트 용)를 작성하고 필요에 따라 버킷을 추가/제거합니다. 기존 그룹 테이블이있는 경우 버킷을 제거, 내가 먼저 확인/추가하려면 :OpenDaylight에서 OpenFlow 그룹 테이블 버킷 목록 업데이트
InstanceIdentifier<Group> groupIid = InstanceIdentifier.builder(Nodes.class)
.child(Node.class, new NodeKey(NodId))
.augmentation(FlowCapableNode.class)
.child(Group.class, grpKey)
.build();
ReadOnlyTransaction roTx = dataBroker.newReadOnlyTransaction();
Future<Optional<Group>> futOptGrp = rwTx.read(LogicalDatastoreType.OPERATIONAL, groupIid);
는 그룹 테이블을 찾을 수없는 경우,이 생성 (SalGroupService.addGroup()). 그룹 테이블을 찾으면 업데이트됩니다 (SalGroupService.updateGroup()).
문제는 RPC 호출 add/updateGroup()이 데이터 모델의 변경 사항을 확인하는 데 약간의 시간이 걸린다는 점입니다. Future<RPCResult<?>>
을 기다리지 만 데이터 모델의 상태가 장치와 동일하지 않을 수도 있습니다.
그럼 데이터 모델에서 그룹 테이블과 버킷 목록을 읽고 어떻게 실제로 장치의 현재 상태와 동일한 상태를 읽었는지 확인하십시오.
나는 알고
- 추가/UpdateGroupInputBuilder는 setTransactionUri이있다()
- DataBroker 읽기/ 가
- 는
체인 트랜잭션을 사용해야 쓰기 트랜잭션을 제공하지만 방법을 알아낼 수 없습니다 이것들을 결합하는 것.
EDIT : 또는 RPC 호출 대신 쓰기 트랜잭션을 사용해야합니까?