Cambiar la URL del servicio en Python Zeep

Quiero usar el cliente SOAP de Python Zeep para realizar llamadas SOAP a un Cisco CUCM. En el archivo WSDL de Cisco, el servicio está definido:

     

Ahora quiero cambiar el “CCMSERVERNAME” a algo real, como “192.168.250.10” sin cambiar el WSDL.

Pero desde los Docs no puedo encontrar nada para cambiar eso.

Encontré una discusión aquí sobre cambiar la URL con “Client.set_address ()” pero esto ya no funciona.

¿Alguien puede darme una pista?

Edición: con la ayuda de mvt, la obtuve, para cualquier persona con el mismo problema, cree el servicio con este comando:

 service = client.create_service(" {http://www.cisco.com/AXLAPIService/}AXLAPIBinding","https://192.168.250.10:8443/axl/") 

Aquí un ejemplo de una llamada SOAP de trabajo:

 phones = service.listPhone({'devicePoolName':'Default'},returnedTags={'name':'','model':''}) 

devuelve dispositivos en una lista:

 SEPFFFFFFFFFFAA Cisco 7841 SEPAAAABBBB2222 Cisco 7841 

Esto debería ser posible a través de http://docs.python-zeep.org/en/master/client.html#creating-new-serviceproxy-objects

Saludos (autor de zeep)

Para un punto final en un servidor interno, no accesible a través de Internet, el puerto 80 reenviado por puerto usando ssh a localhost: 8080 Realicé el siguiente fragmento, copia el enlace de servicio y aplica una traducción a la dirección de enlace para crear un nuevo servicio.

 def get_service(client, translation) if translation: service_binding = client.service._binding.name service_address = client.service._binding_options['address'] return client.create_service( service_binding, service_address.replace(*translation, 1) else: return client.service # ssh port forwarded internal.example.com:80 to localhost:8080 client = zeep.Client(wsdl="localhost:8080/endpoint?WSDL") # client.service now points to the unreachable url internal.example.com/endpoint service = get_service(client=client, translation=('internal.example.com', 'localhost:8080')) # service now points to localhost:8080/endpoint