Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
7c094c93
Commit
7c094c93
authored
Oct 07, 2014
by
Mathieu GAUTHIER-LAFAYE
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add _meta in the list json
parent
3d62e55a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
17 deletions
+39
-17
plugins/inventory/proxmox.py
+39
-17
No files found.
plugins/inventory/proxmox.py
View file @
7c094c93
...
@@ -29,7 +29,18 @@ class ProxmoxNodeList(list):
...
@@ -29,7 +29,18 @@ class ProxmoxNodeList(list):
def
get_names
(
self
):
def
get_names
(
self
):
return
[
node
[
'node'
]
for
node
in
self
]
return
[
node
[
'node'
]
for
node
in
self
]
class
ProxmoxQemu
(
dict
):
def
get_variables
(
self
):
variables
=
{}
for
key
,
value
in
self
.
iteritems
():
variables
[
'proxmox_'
+
key
]
=
value
return
variables
class
ProxmoxQemuList
(
list
):
class
ProxmoxQemuList
(
list
):
def
__init__
(
self
,
data
=
[]):
for
item
in
data
:
self
.
append
(
ProxmoxQemu
(
item
))
def
get_names
(
self
):
def
get_names
(
self
):
return
[
qemu
[
'name'
]
for
qemu
in
self
if
qemu
[
'template'
]
!=
1
]
return
[
qemu
[
'name'
]
for
qemu
in
self
if
qemu
[
'template'
]
!=
1
]
...
@@ -37,6 +48,13 @@ class ProxmoxQemuList(list):
...
@@ -37,6 +48,13 @@ class ProxmoxQemuList(list):
results
=
[
qemu
for
qemu
in
self
if
qemu
[
'name'
]
==
name
]
results
=
[
qemu
for
qemu
in
self
if
qemu
[
'name'
]
==
name
]
return
results
[
0
]
if
len
(
results
)
>
0
else
None
return
results
[
0
]
if
len
(
results
)
>
0
else
None
def
get_variables
(
self
):
variables
=
{}
for
qemu
in
self
:
variables
[
qemu
[
'name'
]]
=
qemu
.
get_variables
()
return
variables
class
ProxmoxPoolList
(
list
):
class
ProxmoxPoolList
(
list
):
def
get_names
(
self
):
def
get_names
(
self
):
return
[
pool
[
'poolid'
]
for
pool
in
self
]
return
[
pool
[
'poolid'
]
for
pool
in
self
]
...
@@ -95,40 +113,42 @@ class ProxmoxAPI(object):
...
@@ -95,40 +113,42 @@ class ProxmoxAPI(object):
return
ProxmoxPool
(
self
.
get
(
'api2/json/pools/{}'
.
format
(
poolid
)))
return
ProxmoxPool
(
self
.
get
(
'api2/json/pools/{}'
.
format
(
poolid
)))
def
main_list
(
options
):
def
main_list
(
options
):
result
=
{}
results
=
{
'all'
:
{
'hosts'
:
[],
},
'_meta'
:
{
'hostvars'
:
{},
}
}
proxmox_api
=
ProxmoxAPI
(
options
)
proxmox_api
=
ProxmoxAPI
(
options
)
proxmox_api
.
auth
()
proxmox_api
.
auth
()
# all
result
[
'all'
]
=
[]
for
node
in
proxmox_api
.
nodes
()
.
get_names
():
for
node
in
proxmox_api
.
nodes
()
.
get_names
():
result
[
'all'
]
+=
proxmox_api
.
node_qemu
(
node
)
.
get_names
()
qemu_list
=
proxmox_api
.
node_qemu
(
node
)
results
[
'all'
][
'hosts'
]
+=
qemu_list
.
get_names
()
results
[
'_meta'
][
'hostvars'
]
.
update
(
qemu_list
.
get_variables
())
# pools
# pools
for
pool
in
proxmox_api
.
pools
()
.
get_names
():
for
pool
in
proxmox_api
.
pools
()
.
get_names
():
result
[
pool
]
=
proxmox_api
.
pool
(
pool
)
.
get_members_name
()
results
[
pool
]
=
{
'hosts'
:
proxmox_api
.
pool
(
pool
)
.
get_members_name
(),
}
print
json
.
dumps
(
result
)
return
json
.
dumps
(
results
)
def
main_host
(
options
):
def
main_host
(
options
):
results
=
{}
proxmox_api
=
ProxmoxAPI
(
options
)
proxmox_api
=
ProxmoxAPI
(
options
)
proxmox_api
.
auth
()
proxmox_api
.
auth
()
host
=
None
for
node
in
proxmox_api
.
nodes
()
.
get_names
():
for
node
in
proxmox_api
.
nodes
()
.
get_names
():
qemu_list
=
proxmox_api
.
node_qemu
(
node
)
qemu_list
=
proxmox_api
.
node_qemu
(
node
)
qemu
=
qemu_list
.
get_by_name
(
options
.
host
)
qemu
=
qemu_list
.
get_by_name
(
options
.
host
)
if
qemu
:
if
qemu
:
break
return
json
.
dumps
(
qemu
.
get_variables
())
if
qemu
:
print
json
.
dumps
({})
for
key
,
value
in
qemu
.
iteritems
():
results
[
'proxmox_'
+
key
]
=
value
print
json
.
dumps
(
results
)
def
main
():
def
main
():
parser
=
OptionParser
(
usage
=
'
%
prog [options] --list | --host HOSTNAME'
)
parser
=
OptionParser
(
usage
=
'
%
prog [options] --list | --host HOSTNAME'
)
...
@@ -140,12 +160,14 @@ def main():
...
@@ -140,12 +160,14 @@ def main():
(
options
,
args
)
=
parser
.
parse_args
()
(
options
,
args
)
=
parser
.
parse_args
()
if
options
.
list
:
if
options
.
list
:
main_list
(
options
)
json
=
main_list
(
options
)
elif
options
.
host
:
elif
options
.
host
:
main_host
(
options
)
json
=
main_host
(
options
)
else
:
else
:
parser
.
print_help
()
parser
.
print_help
()
sys
.
exit
(
1
)
sys
.
exit
(
1
)
print
json
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
main
()
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment