Skip to content
Snippets Groups Projects
Commit ba59c33b authored by Benjamin Bertrand's avatar Benjamin Bertrand
Browse files

Ansible group children in views

parent f046997a
No related branches found
No related tags found
No related merge requests found
...@@ -250,8 +250,12 @@ class AnsibleGroupForm(CSEntryForm): ...@@ -250,8 +250,12 @@ class AnsibleGroupForm(CSEntryForm):
default=models.AnsibleGroupType.STATIC, default=models.AnsibleGroupType.STATIC,
coerce=models.AnsibleGroupType.coerce, coerce=models.AnsibleGroupType.coerce,
) )
children = SelectMultipleField("Children", coerce=utils.coerce_to_str_or_none)
hosts = SelectMultipleField("Hosts", coerce=utils.coerce_to_str_or_none) hosts = SelectMultipleField("Hosts", coerce=utils.coerce_to_str_or_none)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.children.choices = utils.get_model_choices(
models.AnsibleGroup, attr="name"
)
self.hosts.choices = utils.get_model_choices(models.Host, attr="name") self.hosts.choices = utils.get_model_choices(models.Host, attr="name")
...@@ -346,11 +346,17 @@ def edit_ansible_group(name): ...@@ -346,11 +346,17 @@ def edit_ansible_group(name):
# See https://stackoverflow.com/questions/5519729/wtforms-how-to-select-options-in-selectmultiplefield # See https://stackoverflow.com/questions/5519729/wtforms-how-to-select-options-in-selectmultiplefield
form.hosts.default = [host.id for host in group.hosts] form.hosts.default = [host.id for host in group.hosts]
form.hosts.process(request.form) form.hosts.process(request.form)
# Same for AnsibleGroup children
form.children.default = [child.id for child in group.children]
form.children.process(request.form)
if form.validate_on_submit(): if form.validate_on_submit():
group.name = form.name.data group.name = form.name.data
group.vars = form.vars.data or None group.vars = form.vars.data or None
group.type = form.type.data group.type = form.type.data
group.hosts = [models.Host.query.get(id_) for id_ in form.hosts.data] group.hosts = [models.Host.query.get(id_) for id_ in form.hosts.data]
group.children = [
models.AnsibleGroup.query.get(id_) for id_ in form.children.data
]
current_app.logger.debug(f"Trying to update: {group!r}") current_app.logger.debug(f"Trying to update: {group!r}")
try: try:
db.session.commit() db.session.commit()
...@@ -370,11 +376,13 @@ def create_ansible_group(): ...@@ -370,11 +376,13 @@ def create_ansible_group():
form = AnsibleGroupForm() form = AnsibleGroupForm()
if form.validate_on_submit(): if form.validate_on_submit():
hosts = [models.Host.query.get(id_) for id_ in form.hosts.data] hosts = [models.Host.query.get(id_) for id_ in form.hosts.data]
children = [models.AnsibleGroup.query.get(id_) for id_ in form.children.data]
group = models.AnsibleGroup( group = models.AnsibleGroup(
name=form.name.data, name=form.name.data,
vars=form.vars.data or None, vars=form.vars.data or None,
type=form.type.data, type=form.type.data,
hosts=hosts, hosts=hosts,
children=children,
) )
current_app.logger.debug(f"Trying to create: {group!r}") current_app.logger.debug(f"Trying to create: {group!r}")
db.session.add(group) db.session.add(group)
......
...@@ -58,6 +58,7 @@ $(document).ready(function() { ...@@ -58,6 +58,7 @@ $(document).ready(function() {
} }
}, },
{ data: 'type' }, { data: 'type' },
{ data: 'children' },
{ data: 'hosts' } { data: 'hosts' }
] ]
}); });
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
{{ render_field(form.name, class_="text-lowercase") }} {{ render_field(form.name, class_="text-lowercase") }}
{{ render_field(form.vars) }} {{ render_field(form.vars) }}
{{ render_field(form.type) }} {{ render_field(form.type) }}
{{ render_field(form.children, class_="selectpicker") }}
{{ render_field(form.hosts, class_="selectpicker") }} {{ render_field(form.hosts, class_="selectpicker") }}
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-10"> <div class="col-sm-10">
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
{{ render_field(form.name, class_="text-lowercase") }} {{ render_field(form.name, class_="text-lowercase") }}
{{ render_field(form.vars) }} {{ render_field(form.vars) }}
{{ render_field(form.type) }} {{ render_field(form.type) }}
{{ render_field(form.children, class_="selectpicker") }}
{{ render_field(form.hosts, class_="selectpicker") }} {{ render_field(form.hosts, class_="selectpicker") }}
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-10"> <div class="col-sm-10">
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<th>Name</th> <th>Name</th>
<th>Vars</th> <th>Vars</th>
<th>Type</th> <th>Type</th>
<th>Children</th>
<th>Hosts</th> <th>Hosts</th>
</tr> </tr>
</thead> </thead>
......
{% extends "network/groups.html" %} {% extends "network/groups.html" %}
{% from "_helpers.html" import link_to_hosts %} {% from "_helpers.html" import link_to_hosts, link_to_ansible_groups %}
{% block title %}View Ansible group - CSEntry{% endblock %} {% block title %}View Ansible group - CSEntry{% endblock %}
...@@ -22,6 +22,14 @@ ...@@ -22,6 +22,14 @@
<dd class="col-sm-9"><pre>{{ group.vars | toyaml }}</pre></dd> <dd class="col-sm-9"><pre>{{ group.vars | toyaml }}</pre></dd>
<dt class="col-sm-3">Type</dt> <dt class="col-sm-3">Type</dt>
<dd class="col-sm-9">{{ group.type.name }}</dd> <dd class="col-sm-9">{{ group.type.name }}</dd>
{% if group.parents %}
<dt class="col-sm-3">Parents</dt>
<dd class="col-sm-9">{{ link_to_ansible_groups(group.parents) }}</dd>
{% endif %}
{% if group.children %}
<dt class="col-sm-3">Children</dt>
<dd class="col-sm-9">{{ link_to_ansible_groups(group.children) }}</dd>
{% endif %}
<dt class="col-sm-3">hosts</dt> <dt class="col-sm-3">hosts</dt>
<dd class="col-sm-9">{{ link_to_hosts(group.hosts) }}</dd> <dd class="col-sm-9">{{ link_to_hosts(group.hosts) }}</dd>
<dt class="col-sm-3">Created by</dt> <dt class="col-sm-3">Created by</dt>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment