@@ -91,14 +91,16 @@ def __init__(self, resource_name, supports_check_mode=True):
9191 argument_spec = argument_spec ,
9292 supports_check_mode = supports_check_mode ,
9393 mutually_exclusive = [
94+ (
95+ "nitro_pass" , "nitro_auth_token"
96+ ),
9497 (
9598 "managed_netscaler_instance_name" ,
9699 "managed_netscaler_instance_ip" ,
97100 "managed_netscaler_instance_id" ,
98101 ),
99102 ],
100103 required_together = [
101- ("nitro_user" , "nitro_pass" ),
102104 (
103105 "managed_netscaler_instance_username" ,
104106 "managed_netscaler_instance_password" ,
@@ -144,7 +146,7 @@ def __init__(self, resource_name, supports_check_mode=True):
144146 "logout" ,
145147 }:
146148 self .module .params ["api_path" ] = "nitro/v2/config"
147-
149+ self . have_token = self . module . params . get ( "nitro_auth_token" , None )
148150 self .client = NitroAPIClient (self .module , self .resource_name )
149151 have_userpass = all ([
150152 self .module .params .get ("nitro_user" ),
@@ -220,7 +222,7 @@ def return_success(self):
220222 # }
221223 if self .resource_name == "login" :
222224 self .module_result ["sessionid" ] = self .sessionid
223- if self .client ._headers .get ("Cookie" , None ) not in (None , "" ) and not self .module .check_mode :
225+ if self .client ._headers .get ("Cookie" , None ) not in (None , "" ) and not self .module .check_mode and not self . have_token :
224226 ok , response = adc_logout (self .client )
225227 if not ok :
226228 log ("ERROR: Logout failed: %s" % response )
@@ -250,7 +252,7 @@ def update_diff_list(self, existing=None, desired=None, delete=False, **kwargs):
250252
251253 @trace
252254 def return_failure (self , msg ):
253- if self .client ._headers [ "Cookie" ] != "" and not self .module .check_mode :
255+ if self .client ._headers . get ( "Cookie" , None ) not in ( None , "" ) and not self .module .check_mode and not self . have_token :
254256 ok , response = adc_logout (self .client )
255257 if not ok :
256258 log ("ERROR: Logout failed: %s" % response )
@@ -1019,11 +1021,16 @@ def act_on_resource(self, action):
10191021 action = action ,
10201022 )
10211023 if ok :
1024+ # For rename operations, always treat HTTP_RESOURCE_ALREADY_EXISTS as failure
1025+ # This prevents false positives where we think a rename succeeded when it actually
1026+ # failed due to a name conflict with a different existing resource
10221027 if (
10231028 "status_code" in err
10241029 and err ["status_code" ] == HTTP_RESOURCE_ALREADY_EXISTS
10251030 ):
10261031 self .module_result ["changed" ] = False
1032+ if action == "rename" :
1033+ self .return_failure (err )
10271034 else :
10281035 self .return_failure (err )
10291036
0 commit comments