@@ -364,7 +364,9 @@ def create_reserved_ip(test_linode_client):
364364
365365 yield reserved_ip
366366
367- reserved_ip .delete ()
367+ # Delete only if IP exists (some tests delete it earlier)
368+ if client .networking .reserved_ips (ReservedIPAddress .address == reserved_ip .address ):
369+ reserved_ip .delete ()
368370
369371
370372@pytest .fixture
@@ -386,7 +388,7 @@ def create_reserved_ip_assigned(test_linode_client, create_linode):
386388 yield linode , reserved_ip
387389
388390 # Delete only if IP exists (some tests delete it earlier)
389- if reserved_ip . address in [ ip . address for ip in client .networking .reserved_ips ()] :
391+ if client .networking .reserved_ips (ReservedIPAddress . address == reserved_ip . address ) :
390392 reserved_ip .delete ()
391393
392394
@@ -444,12 +446,15 @@ def test_create_reserved_ip_wo_region_fail(test_linode_client):
444446
445447
446448@pytest .mark .skip # NOTE: Skipped as tags not available in the API yet
447- def test_update_reserved_ip_tags (create_reserved_ip ):
449+ def test_update_reserved_ip_tags (test_linode_client , create_reserved_ip ):
450+ client = test_linode_client
448451 reserved_ip = create_reserved_ip
449452 verify_reserved_ip (reserved_ip )
450453 assert reserved_ip .tags == ["test" ]
451454
452- reserved_ip .save (tags = ["updated" ])
455+ reserved_ip .tags = ["updated" ]
456+ reserved_ip .save ()
457+ reserved_ip = client .networking .reserved_ips (ReservedIPAddress .address == reserved_ip .address )[0 ]
453458 verify_reserved_ip (reserved_ip )
454459 assert reserved_ip .tags == ["updated" ]
455460
@@ -540,3 +545,38 @@ def test_create_reserved_ip_with_allocate_fail(test_linode_client, create_linode
540545 error_msg = str (exc_info .value .json )
541546 assert exc_info .value .status == 400
542547 assert "Region passed in must match Linode's region" in error_msg
548+
549+
550+ def test_reserve_ephemeral_ip (test_linode_client , create_linode ):
551+ client = test_linode_client
552+ linode = create_linode
553+
554+ ip_address = client .load (IPAddress , linode .ipv4 [0 ])
555+ assert ip_address .linode_id == linode .id
556+ assert ip_address .reserved == False
557+
558+ ip_address .reserved = True
559+ # ip_address.rdns = "test.example.org" # TODO: Should be enabled ?
560+ ip_address .save ()
561+ ip_address = client .load (IPAddress , linode .ipv4 [0 ])
562+ assert ip_address .linode_id == linode .id
563+ assert ip_address .reserved == True
564+
565+ ip_address .reserved = False
566+ ip_address .save ()
567+ ip_address = client .load (IPAddress , linode .ipv4 [0 ])
568+ assert ip_address .linode_id == linode .id
569+ assert ip_address .reserved == False
570+
571+
572+ def test_convert_unassigned_reserved_ip_to_ephemeral (test_linode_client , create_reserved_ip ):
573+ client = test_linode_client
574+ reserved_ip = create_reserved_ip
575+ verify_reserved_ip (reserved_ip )
576+
577+ ip_address = client .load (IPAddress , reserved_ip .address )
578+ ip_address .reserved = False
579+ ip_address .save ()
580+
581+ reserved_ips_list = client .networking .reserved_ips (ReservedIPAddress .address == reserved_ip .address )
582+ assert len (reserved_ips_list ) == 0
0 commit comments