2014-06-10 5 views
1

전구를 사용하여 꼭지점을 만듭니다. 다음과 같은 3 가지 기능을 작성했습니다. 출력물 아래에 나열된 꼭지점의 속성을 이해하는 데 도움이됩니다. 각 기능의 디버그 라인.전구 : 이미 존재하지 않는 경우에만 꼭지점 만들기

DEBUG LINE: 
     self.logger.info('%s',self.switches) 
OUTPUT: 
    00:00:00:00:00:00:02:01 
    00:00:00:00:00:00:02:02 
    00:00:00:00:00:00:02:03 
    00:00:00:00:00:00:02:04 
    00:00:00:00:00:00:02:05 
    00:00:00:00:00:00:02:06 

DEBUG LINE: 
    self.logger.info('%s',self.ports) 
OUTPUT: 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:011', 'desc': 's1-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:012', 'desc': 's1-eth2'} 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:021', 'desc': 's2-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:022', 'desc': 's2-eth2'} 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:031', 'desc': 's3-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:032', 'desc': 's3-eth2'} 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:041', 'desc': 's4-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:042', 'desc': 's4-eth2'} 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:051', 'desc': 's5-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:052', 'desc': 's5-eth2'} 
    {'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:061', 'desc': 's6-eth1'} 
    {'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:062', 'desc': 's6-eth2'} 

DEBUG LINE: 
    self.logger.info('%s',self.devices) 
OUTPUT:  
    {'dl_addr': '00:00:00:00:00:04', 'state': 'active', 'type': 'device'} 
    {'dl_addr': '00:00:00:00:00:01', 'state': 'active', 'type': 'device'} 
    {'dl_addr': '00:00:00:00:00:03', 'state': 'active', 'type': 'device'} 
    {'dl_addr': '00:00:00:00:00:05', 'state': 'active', 'type': 'device'} 
    {'dl_addr': '00:00:00:00:00:02', 'state': 'active', 'type': 'device'} 
    {'dl_addr': '00:00:00:00:00:06', 'state': 'active', 'type': 'device'} 

     def create_switch_vertices(self): 
     for index,switch in enumerate(self.switch_list): 
       dpid_str = dpid_to_str(switch.dp.id) 
       dpid_str = ':'.join([dpid_str[i:i + 2] for i in range(0, len(dpid_str), 2)]) 
       self.switches = {'state':'active','dpid':dpid_str,'type':'switch'} 
       self.logger.info('%s',dpid_str) 
       self.sw_vertices.append(self.g.vertices.create({'state':'active','dpid':dpid_str,'type':'switch'})) 


    def create_port_vertices(self): 
     for index,switch in enumerate(self.switch_list): 
       for port in switch.ports: 
         desc = port.name 
         hw_addr = port.hw_addr 
         state = 'active' 
         port_state = 1 
         number = port.port_no 
         dpid_str = dpid_to_str(port.dpid) 
         dpid_s = ':'.join([dpid_str[i:i + 2] for i in range(0, len(dpid_str), 2)]) 
         port_id = dpid_s + str(number) 
         self.ports = {'desc':desc,'port_id':port_id,'state':state,'port_state':port_state,'number':number,'type':'port'} 
         self.logger.info('%s',self.ports) 
         self.port_vertices.append(self.g.vertices.create({'desc':desc,'port_id':port_id,'state':state,'port_state':port_state,'number':number,'type':'port'})) 

    def create_host_vertices(self): 
     for value in switch_port_to_host.values(): 
       self.devices = {'state':'active','dl_addr':value,'type':'device'} 
       self.logger.info('%s',self.devices) 
       self.host_vertices.append(self.g.vertices.create({'state':'active','dl_addr':value,'type':'device'})) 

내 질문은 다음과 같습니다.

1)이 코드를 실행 한 후 열린 렉스 마스터 셸을 열었습니다. 내가 코드가 여러 같소를 실행하면

g = rexster.getGraph("graph") 
==>titangraph[embeddedcassandra:null] 

g.V('type', 'device').map  
==>{state=active, type=device, dl_addr=00:00:00:00:00:05} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:06} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:04} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:03} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:02} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:05} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:06} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:04} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:01} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:03} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:01} 
==>{state=active, type=device, dl_addr=00:00:00:00:00:02} 

g.V('type', 'switch').map  
==>{state=active, dpid=00:00:00:00:00:00:02:06, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:05, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:02, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:04, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:06, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:03, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:01, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:04, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:01, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:05, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:02, type=switch} 
==>{state=active, dpid=00:00:00:00:00:00:02:03, type=switch} 

    g.V('type', 'port').map  
    ==>{desc=s5-eth1, port_id=00:00:00:00:00:00:02:051, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s5-eth1, port_id=00:00:00:00:00:00:02:051, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s1-eth1, port_id=00:00:00:00:00:00:02:011, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s2-eth1, port_id=00:00:00:00:00:00:02:021, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s6-eth1, port_id=00:00:00:00:00:00:02:061, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s3-eth1, port_id=00:00:00:00:00:00:02:031, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s3-eth2, port_id=00:00:00:00:00:00:02:032, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s1-eth2, port_id=00:00:00:00:00:00:02:012, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s3-eth1, port_id=00:00:00:00:00:00:02:031, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s4-eth1, port_id=00:00:00:00:00:00:02:041, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s6-eth2, port_id=00:00:00:00:00:00:02:062, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s1-eth2, port_id=00:00:00:00:00:00:02:012, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s3-eth2, port_id=00:00:00:00:00:00:02:032, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s6-eth2, port_id=00:00:00:00:00:00:02:062, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s4-eth2, port_id=00:00:00:00:00:00:02:042, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s5-eth2, port_id=00:00:00:00:00:00:02:052, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s1-eth1, port_id=00:00:00:00:00:00:02:011, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s4-eth1, port_id=00:00:00:00:00:00:02:041, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s5-eth2, port_id=00:00:00:00:00:00:02:052, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s2-eth2, port_id=00:00:00:00:00:00:02:022, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s6-eth1, port_id=00:00:00:00:00:00:02:061, state=active, port_state=1, number=1, type=port} 
    ==>{desc=s2-eth2, port_id=00:00:00:00:00:00:02:022, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s4-eth2, port_id=00:00:00:00:00:00:02:042, state=active, port_state=1, number=2, type=port} 
    ==>{desc=s2-eth1, port_id=00:00:00:00:00:00:02:021, state=active, port_state=1, number=1, type=port} 

당신은 아마 만든 동일한 정점의 여러 사본을 볼 수 있습니다 할이 문제 상황을 피하려면 정점이 이미하지 않는 경우에만 생성 할 어떻게해야합니까?

답변