blob: 51d8745c05bca67aa3672bbb9c313ab41ec63776 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright John Berninger (@jberning) <john.berninger at gmail.com>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = '''
---
module: proxmox_node_info
short_description: Retrieve information about one or more Proxmox VE nodes
version_added: 8.2.0
description:
- Retrieve information about one or more Proxmox VE nodes.
author: John Berninger (@jwbernin)
attributes:
action_group:
version_added: 9.0.0
extends_documentation_fragment:
- community.general.proxmox.actiongroup_proxmox
- community.general.proxmox.documentation
- community.general.attributes
- community.general.attributes.info_module
'''
EXAMPLES = '''
- name: List existing nodes
community.general.proxmox_node_info:
api_host: proxmox1
api_user: root@pam
api_password: "{{ password | default(omit) }}"
api_token_id: "{{ token_id | default(omit) }}"
api_token_secret: "{{ token_secret | default(omit) }}"
register: proxmox_nodes
'''
RETURN = '''
proxmox_nodes:
description: List of Proxmox VE nodes.
returned: always, but can be empty
type: list
elements: dict
contains:
cpu:
description: Current CPU usage in fractional shares of this host's total available CPU.
returned: on success
type: float
disk:
description: Current local disk usage of this host.
returned: on success
type: int
id:
description: Identity of the node.
returned: on success
type: str
level:
description: Support level. Can be blank if not under a paid support contract.
returned: on success
type: str
maxcpu:
description: Total number of available CPUs on this host.
returned: on success
type: int
maxdisk:
description: Size of local disk in bytes.
returned: on success
type: int
maxmem:
description: Memory size in bytes.
returned: on success
type: int
mem:
description: Used memory in bytes.
returned: on success
type: int
node:
description: Short hostname of this node.
returned: on success
type: str
ssl_fingerprint:
description: SSL fingerprint of the node certificate.
returned: on success
type: str
status:
description: Node status.
returned: on success
type: str
type:
description: Object type being returned.
returned: on success
type: str
uptime:
description: Node uptime in seconds.
returned: on success
type: int
'''
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.community.general.plugins.module_utils.proxmox import (
proxmox_auth_argument_spec, ProxmoxAnsible)
class ProxmoxNodeInfoAnsible(ProxmoxAnsible):
def get_nodes(self):
nodes = self.proxmox_api.nodes.get()
return nodes
def proxmox_node_info_argument_spec():
return dict()
def main():
module_args = proxmox_auth_argument_spec()
node_info_args = proxmox_node_info_argument_spec()
module_args.update(node_info_args)
module = AnsibleModule(
argument_spec=module_args,
required_one_of=[('api_password', 'api_token_id')],
required_together=[('api_token_id', 'api_token_secret')],
supports_check_mode=True,
)
result = dict(
changed=False
)
proxmox = ProxmoxNodeInfoAnsible(module)
nodes = proxmox.get_nodes()
result['proxmox_nodes'] = nodes
module.exit_json(**result)
if __name__ == '__main__':
main()
|