Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
123 changes: 106 additions & 17 deletions SnowBear/blueprints/inventory/network/main.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,128 @@
import os
import re
from time import time
import yaml
from flask import Blueprint, render_template, request
from functions.bbui import load_yaml,dump_yaml


network = Blueprint('network', __name__, template_folder='templates')

page_navigation_data = load_yaml('blueprints.yml')


@network.route("/inventory/network/index.html", methods = ['GET', 'POST'])
def inventory_network_index():
return render_template("page.html.j2", \
page_content_path="network/index.html.j2", \
page_title="Inventory - network", \
page_navigation_data=page_navigation_data, \
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
)

@network.route("/inventory/network/networks.html", methods = ['GET', 'POST'])
def inventory_network_networks():
absolute_path=load_yaml("general_settings.yml")["general_settings"]["root_path"]
if (os.path.isfile(absolute_path+"/group_vars/all/general_settings/network.yml") == True):
print(absolute_path+"/group_vars/all/general_settings/network.yml")
network_list=load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")["networks"]
else:
open((absolute_path+"/group_vars/all/general_settings/network.yml"), 'a').close()
dump_yaml(absolute_path+"/group_vars/all/general_settings/network.yml",{'domain_name': 'tumulus.local', 'networks': {'ice1-1': {'subnet': '10.10.0.0', 'prefix': 16, 'netmask': '255.255.0.0', 'broadcast': '10.10.255.255', 'dhcp_unknown_range': '10.10.254.1 10.10.254.254', 'gateway': '10.10.2.1', 'is_in_dhcp': True, 'is_in_dns': True, 'services_ip': {'pxe_ip': '10.10.0.1', 'dns_ip': '10.10.0.1', 'repository_ip': '10.10.0.1', 'authentication_ip': '10.10.0.1', 'time_ip': '10.10.0.1', 'log_ip': '10.10.0.1'}}}})
network_list=load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")["networks"]
return render_template("page.html.j2", \
page_content_path="network/networks.html.j2", \
page_title="Inventory - networks", \
page_navigation_data=page_navigation_data, \
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
network_list=network_list, \
)

@network.route("/inventory/network/network_add.html", methods = ['GET', 'POST'])
def inventory_network_network_add():
if request.method== "POST":
try:
print("sucess")
network_identifier=request.form.get("network_identifier")

subnet=(request.form.get("subnet"))
prefix=(request.form.get("prefix"))
netmask=(request.form.get("netmask"))
broadcast=(request.form.get("broadcast"))
dhcp_unknown_range=(request.form.get("dhcp_unknow_range"))
gateway=(request.form.get("gateway"))
is_in_dhcp=(request.form.get("is_in_dhcp"))
is_in_dns=(request.form.get("is_in_dns"))

# Gather list of existing equipment groups
equipment_groups_data = {}
for folder in os.listdir("etcbluebanquiseinventory/group_vars/"):
if re.match('^equipment_.*', folder):
yaml_buffer = load_yaml('etcbluebanquiseinventory/group_vars/' + folder + '/data.yml')
equipment_groups_data[folder] = yaml_buffer
pxe_ip=(request.form.get("pxe_ip"))
dns_ip=(request.form.get("dns_ip"))
repository_ip=(request.form.get("repository_ip"))
authentication_ip=(request.form.get("authentication_ip"))
time_ip=(request.form.get("time_ip"))
log_ip=(request.form.get("log_ip"))


absolute_path=load_yaml("general_settings.yml")["general_settings"]["root_path"]
yaml_buffer = load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")
yaml_buffer['networks'][network_identifier] = {'subnet': subnet, 'prefix': prefix, 'netmask': netmask, 'broadcast': broadcast, 'dhcp_unknown_range': dhcp_unknown_range, 'gateway': gateway, 'is_in_dhcp': is_in_dhcp, 'is_in_dns': is_in_dns, 'services_ip': {'pxe_ip': pxe_ip, 'dns_ip': dns_ip, 'repository_ip': repository_ip, 'authentication_ip': authentication_ip, 'time_ip': time_ip, 'log_ip': log_ip}}

dump_yaml(absolute_path+"/group_vars/all/general_settings/network.yml",yaml_buffer)
return render_template("page.html.j2", \
page_content_path="network/network_add.html.j2", \
page_title="Inventory - network list", \
page_navigation_data=page_navigation_data, \
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
is_success="true", \
)
except:
return render_template("page.html.j2", \
page_content_path="network/network_add.html.j2", \
page_title="Inventory - network list", \
page_navigation_data=page_navigation_data, \
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
is_success="false", \
)


absolute_path=load_yaml("general_settings.yml")["general_settings"]["root_path"]
network_list=load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")
return render_template("page.html.j2", \
page_content_path="equipment/index.html.j2", \
page_title="Inventory - equipment", \
page_content_path="network/network_add.html.j2", \
page_title="Inventory - network list", \
page_navigation_data=page_navigation_data, \
page_left_menu="equipment/menu.html.j2", left_menu_active="index", \
equipment_groups_data=equipment_groups_data)
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
)

@network.route("/inventory/equipment/add.html")
def inventory_equipment_add():
@network.route("/inventory/network/network_delete.html", methods = ['GET', 'POST'])
def inventory_network_delete():
absolute_path=load_yaml("general_settings.yml")["general_settings"]["root_path"]
if request.method== "POST":
try:
network=request.form.get("network")

network_list=load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")["networks"]
yaml_buffer = load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")
x = yaml_buffer['networks'].pop(network)
dump_yaml(absolute_path+"/group_vars/all/general_settings/network.yml",yaml_buffer)

except:
print("error")

equipment_variables = load_yaml('blueprints/inventory/equipment/equipment_variables.yml')
network_list=load_yaml(absolute_path+"/group_vars/all/general_settings/network.yml")["networks"]

return render_template("page.html.j2", \
page_content_path="network/network_delete.html.j2", \
page_title="Inventory - network delete", \
page_navigation_data=page_navigation_data, \
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
network_list=network_list, \
)

@network.route("/inventory/network/network_modify.html", methods = ['GET', 'POST'])
def inventory_network_modify():
return render_template("page.html.j2", \
page_content_path="equipment/add.html.j2", \
page_title="Inventory - equipment - Add", \
page_content_path="network/network_modify.html.j2", \
page_title="Inventory - network modify", \
page_navigation_data=page_navigation_data, \
page_left_menu="equipment/menu.html.j2", left_menu_active="add", \
equipment_variables=equipment_variables )
page_left_menu="network/menu.html.j2", left_menu_active="networks", \
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,26 @@
Manage cluster networks<br>
</h2>

<pre>
___ _ ___ _ ___ _ ___ _ ___ _
[(_)] |=| [(_)] |=| [(_)] |=| [(_)] |=| [(_)] |=|
'-` |_| '-` |_| '-` |_| '-` |_| '-` |_|
/mmm/ / /mmm/ / /mmm/ / /mmm/ / /mmm/ /
|____________|____________|____________|____________|
| | |
___ \_ ___ \_ ___ \_
[(_)] |=| [(_)] |=| [(_)] |=|
'-` |_| '-` |_| '-` |_|
/mmm/ /mmm/ /mmm/

<a class="button" href="/inventory/equipment/add.html">
<span class="icon is-small"><i class="fa fa-play"></i></span><span>Add equipment profile</span>
</a>
<a class="button" href="/inventory/equipment/remove.html">
<span class="icon is-small"><i class="fa fa-play"></i></span><span>Remove equipment profile</span>
</a>
<br>
<br>
<br>
{% if (equipment_groups_data | length) == 0 %}
<div class="notification is-warning">
<strong>No equipment profiles detected</strong>.<br>
</div>
{% endif %}
{% for mg in equipment_groups_data %}
<a href="/inventory/equipment/manage.html?custom_equipment={{ mg }}">
<div class="card">
<div class="card-header"><p class="card-header-title">{{ mg }}</p></div>
<div class="card-content"><div class="content">{{ equipment_groups_data[mg]['description'] }}</div></div>
</div>
<br />
</a>
{% endfor %}
</pre>


<div class="box">
<p>
In this section, you will find everything network-related.
</p>
<p>
This includes networks, nics, etc...
</p>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

<aside class="column is-3 is-narrow-mobile is-fullheight section is-hidden-mobile">
<p class="menu-label">
Networks
</p>
<ul class="menu-list">
<li><a href="/inventory/network/networks.html" {% if left_menu_active == "networks" %}is-active{% endif %}>Manage networks</a></li>
</ul>
<p class="menu-label">
NICS
</p>
<ul class="menu-list">
<li><a {% if left_menu_active == "nics" %}is-active{% endif %}>Manage NICS</a></li>
</ul>
</aside>

Loading