Files
toallab-automation/collections/ansible_collections/davidban77/gns3/plugins/modules/gns3_version.py

101 lines
2.4 KiB
Python

#!/usr/bin/env python
ANSIBLE_METADATA = {
"metadata_version": "1.3",
"status": ["preview"],
"supported_by": "community",
}
DOCUMENTATION = """
---
module: gns3_version
short_description: Retrieves GNS3 server version
version_added: '2.8'
description:
- 'Retrieves GNS3 server version using gns3fy'
requirements: [ gns3fy ]
author:
- David Flores (@davidban77)
options:
url:
description:
- URL target of the GNS3 server
required: true
type: str
port:
description:
- TCP port to connect to server REST API
type: int
default: 3080
user:
description:
- User to connect to GNS3 server
type: str
password:
description:
- Password to connect to GNS3 server
type: str
"""
EXAMPLES = """
# Retrieve the GNS3 server version
- name: Get the server version
gns3_version:
url: http://localhost
port: 3080
register: result
- debug: var=result
"""
RETURN = """
local_compute:
description: Whether this is a local server or not
type: bool
returned: always
version:
description: Version number of the server
type: str
returned: always
"""
import traceback
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
GNS3FY_IMP_ERR = None
try:
from gns3fy import Gns3Connector
HAS_GNS3FY = True
except Exception:
HAS_GNS3FY = False
GNS3FY_IMP_ERR = traceback.format_exc()
def main():
module = AnsibleModule(
argument_spec=dict(
url=dict(type="str", required=True),
port=dict(type="int", default=3080),
user=dict(type="str", default=None),
password=dict(type="str", default=None, no_log=True),
)
)
if not HAS_GNS3FY:
module.fail_json(msg=missing_required_lib("gns3fy"), exception=GNS3FY_IMP_ERR)
result = dict(changed=False, local_compute=None, version=None)
server_url = module.params["url"]
server_port = module.params["port"]
server_user = module.params["user"]
server_password = module.params["password"]
server = Gns3Connector(
url=f"{server_url}:{server_port}", user=server_user, cred=server_password
)
_version = server.get_version()
result.update(local_compute=_version["local"], version=_version["version"])
module.exit_json(**result)
if __name__ == "__main__":
main()