コード例 #1
0
ファイル: rpc_servicer_tests.py プロジェクト: markjen/magma
    def test_remove_after_releasing_some_addresses(self):
        """ remove after releasing some addresses shouldn't remove block """
        # Assign IP block
        self._stub.AddIPBlock(self._block_msg)

        # Allocate 2 IPs
        alloc_request0 = AllocateIPRequest(
            sid=self._sid0,
            version=AllocateIPRequest.IPV4,
            apn=self._apn0,
        )
        ip_msg0 = self._stub.AllocateIPAddress(alloc_request0)

        alloc_request1 = AllocateIPRequest(
            sid=self._sid1,
            version=AllocateIPRequest.IPV4,
            apn=self._apn0,
        )
        self._stub.AllocateIPAddress(alloc_request1)

        # Test remove without force -- should not remove block
        remove_request0 = RemoveIPBlockRequest(
            ip_blocks=[self._block_msg],
            force=False,
        )
        resp = self._stub.RemoveIPBlock(remove_request0)

        expect = RemoveIPBlockResponse()
        self.assertEqual(expect, resp)

        # Ensure that block has not been removed
        resp = self._stub.ListAddedIPv4Blocks(Void())
        expect = ListAddedIPBlocksResponse()
        expect.ip_block_list.extend([self._block_msg])
        self.assertEqual(expect, resp)

        # Release the allocated IPs
        release_request0 = ReleaseIPRequest(
            sid=self._sid0,
            ip=ip_msg0.ip_list[0],
            apn=self._apn0,
        )
        resp = self._stub.ReleaseIPAddress(release_request0)
        self.assertEqual(resp, Void())

        # Test remove without force -- should not remove block
        remove_request1 = RemoveIPBlockRequest(
            ip_blocks=[self._block_msg],
            force=False,
        )
        resp = self._stub.RemoveIPBlock(remove_request1)

        expect = RemoveIPBlockResponse()
        self.assertEqual(expect, resp)

        # Ensure that block has not been removed
        resp = self._stub.ListAddedIPv4Blocks(Void())
        expect = ListAddedIPBlocksResponse()
        expect.ip_block_list.extend([self._block_msg])
        self.assertEqual(expect, resp)
コード例 #2
0
 def remove_ip_blocks(self, blocks):
     try:
         ip_blocks = [
             IPBlock(version={
                 4: IPAddress.IPV4,
                 6: IPAddress.IPV6
             }[block.version],
                     net_address=block.network_address.packed,
                     prefix_len=block.prefixlen) for block in blocks
         ]
         response = self._mobility_stub.RemoveIPBlock(
             RemoveIPBlockRequest(ip_blocks=ip_blocks, force=False))
         removed_ip_block_list = ()
         for block in response.ip_blocks:
             address_bytes = block.net_address
             address_int = int.from_bytes(address_bytes, byteorder='big')
             address = ipaddress.ip_address(address_int)
             removed_ip_block_list += (ipaddress.ip_network(
                 "%s/%d" % (address, block.prefix_len)), )
         return removed_ip_block_list
     except grpc.RpcError as error:
         err_code = error.exception().code()
         if (err_code == grpc.StatusCode.FAILED_PRECONDITION):
             logging.info("Ignoring FAILED_PRECONDITION exception")
         else:
             raise
コード例 #3
0
def _setup_ip_block(client):
    ip_blocks_rsp = client.ListAddedIPv4Blocks(Void())
    remove_blocks_req = RemoveIPBlockRequest(force=True)
    for block in ip_blocks_rsp.ip_block_list:
        remove_blocks_req.ip_blocks.append(block)
    client.RemoveIPBlock(remove_blocks_req)
    ip_block = ipaddress.ip_network('192.168.128.0/20')
    client.AddIPBlock(IPBlock(version=IPBlock.IPV4,
                              net_address=ip_block.network_address.packed,
                              prefix_len=ip_block.prefixlen))
コード例 #4
0
    def test_remove_no_assigned_blocks(self):
        """ remove should return nothing """
        remove_request0 = RemoveIPBlockRequest(ip_blocks=[self._block_msg],
                                               force=False)
        resp = self._stub.RemoveIPBlock(remove_request0)

        expect = RemoveIPBlockResponse()
        self.assertEqual(expect, resp)

        resp = self._stub.ListAddedIPv4Blocks(Void())
        expect = ListAddedIPBlocksResponse()
        self.assertEqual(expect, resp)
コード例 #5
0
ファイル: rpc_servicer_tests.py プロジェクト: wlm328cs/magma
    def test_remove_allocated_assigned_block_with_force(self):
        """ remove should return nothing """
        self._stub.AddIPBlock(self._block_msg)

        alloc_request0 = AllocateIPRequest(sid=self._sid0,
                                           version=AllocateIPRequest.IPV4)
        self._stub.AllocateIPAddress(alloc_request0)

        remove_request0 = RemoveIPBlockRequest(ip_blocks=[self._block_msg],
                                               force=True)
        resp = self._stub.RemoveIPBlock(remove_request0)

        expect = RemoveIPBlockResponse()
        expect.ip_blocks.extend([self._block_msg])
        self.assertEqual(expect, resp)

        resp = self._stub.ListAddedIPv4Blocks(Void())
        expect = ListAddedIPBlocksResponse()
        self.assertEqual(expect, resp)
コード例 #6
0
ファイル: mobility_cli.py プロジェクト: ekfuhrmann/magma-old
def remove_ip_block_handler(client, args):
    ipblock_msgs = ()
    for ipblock in args.ipblocks:
        ipblock_msg = IPBlock()
        if ipblock.version == 4:
            ipblock_msg.version = IPBlock.IPV4
        else:
            print("Error: IP version %d is not supported yet" %
                  ipblock.version)
            return
        ipblock_msg.net_address = ipblock.network_address.packed
        ipblock_msg.prefix_len = ipblock.prefixlen
        ipblock_msgs += (ipblock_msg, )

    request = RemoveIPBlockRequest(ip_blocks=ipblock_msgs, force=args.force)
    remove_response = client.RemoveIPBlock(request)
    print("IPv4 Blocks Removed: ")
    for block_msg in remove_response.ip_blocks:
        ip = ipaddress.ip_address(block_msg.net_address)
        block = ipaddress.ip_network("%s/%d" % (ip, block_msg.prefix_len))
        print("\t%s" % block)