💊 capsul.org cloud compute service - python flask web application
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

173 lines
5.3 KiB

{% extends 'base.html' %}
{% block title %}Capsul Admin{% endblock %}
{% block content %}
<style nonce="{{csp_inline_style_nonce}}">
{{inline_style}}
</style>
<div class="row third-margin">
<h1>Capsul Admin</h1>
</div>
<div class="third-margin">
{% for display_host in display_hosts %}
<div class="row">
<h1>{{ display_host["name"] }}</h1>
</div>
{% for network in display_host["networks"] %}
<div class="row network-row">
<i>{{ network["network_name"] }}</i>
<span>{{ network["public_ipv4_cidr_block"] }}</span>
<div class="network-display">
{% for allocation in network["allocations"] %}
{# This outer div is used as an abs position container & selected by CSS so don't remove it pls. #}
<div>
<div class="{{allocation}}">
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
<hr/>
{% endfor %}
</div>
{% if in_db_but_not_in_virt|length > 0 %}
<div class="row third-margin">
<h1>🚨 in the database but not in the virtualization model 🚨</h1>
</div>
{% for vm in in_db_but_not_in_virt %}
<div class="row">
{{vm['id']}} ({{vm['email']}}) {{vm['public_ipv4']}}
</div>
{% endfor %}
<hr/>
{% endif %}
{% if state_not_equal_to_desired_state|length > 0 %}
<div class="row third-margin">
<h1>😴 vm state != desired state 😴</h1>
</div>
{% for vm in state_not_equal_to_desired_state %}
<div class="row">
<div>{{vm['id']}} ({{vm['email']}}): state={{vm['state']}} desired_state={{vm['desired_state']}}</div>
<form method="post">
<input type="hidden" name="action" value="start_or_stop"></input>
<input type="hidden" name="id" value="{{vm['id']}}"></input>
<input type="hidden" name="desired_state" value="{{vm['desired_state']}}"></input>
<input type="hidden" name="csrf-token" value="{{ csrf_token }}"/>
<input type="submit" value="🚦 START/STOP"/>
</form>
</div>
{% endfor %}
<hr/>
{% endif %}
{% if has_no_desired_ip_address|length > 0 %}
<div class="row third-margin">
<h1>🐣 has no desired ip address 🐣</h1>
</div>
{% for vm in has_no_desired_ip_address %}
<div class="row">
{{vm['id']}} ({{vm['email']}})
</div>
{% endfor %}
<hr/>
{% endif %}
{% if has_not_aquired_ip_address_yet|length > 0 %}
<div class="row third-margin">
<h1>🏃 hasn't aquired an ip address yet 🏃</h1>
</div>
{% for vm in has_not_aquired_ip_address_yet %}
<div class="row">
{{vm['id']}} ({{vm['email']}}) desired_ipv4={{vm['public_ipv4']}}
</div>
{% endfor %}
<hr/>
{% endif %}
{% if stole_someone_elses_ip_and_own_ip_avaliable|length > 0 %}
<div class="row third-margin">
<h1>👻 stole someone elses ip and own desired ip is avaliable 👻</h1>
</div>
{% for vm in stole_someone_elses_ip_and_own_ip_avaliable %}
<div class="row">
<div>{{vm['id']}} ({{vm['email']}}): current_ipv4={{vm['current_ipv4']}} desired_ipv4={{vm['desired_ipv4']}}</div>
<form method="post">
<input type="hidden" name="action" value="dhcp_reset"></input>
<input type="hidden" name="id" value="{{vm['id']}}"></input>
<input type="hidden" name="csrf-token" value="{{ csrf_token }}"/>
<input type="submit" value="🔨 DHCP RESET"/>
</form>
</div>
{% endfor %}
<hr/>
{% endif %}
{% if has_wrong_ip|length > 0 %}
<div class="row third-margin">
<h1>🥴 has wrong ip address 🥴</h1>
</div>
{% for vm in has_wrong_ip %}
<div class="row">
<div>{{vm['id']}} ({{vm['email']}}): current_ipv4={{vm['current_ipv4']}} desired_ipv4={{vm['desired_ipv4']}}</div>
<form method="post">
<input type="hidden" name="action" value="dhcp_reset"></input>
<input type="hidden" name="id" value="{{vm['id']}}"></input>
<input type="hidden" name="csrf-token" value="{{ csrf_token }}"/>
<input type="submit" value="🔨 DHCP RESET"/>
</form>
</div>
{% endfor %}
<hr/>
{% endif %}
{% if stole_someone_elses_ip_but_own_ip_also_stolen|length > 0 %}
<div class="row third-margin">
<h1>💀 stole someone elses ip but own desired ip was also stolen 💀</h1>
</div>
{% for vm in stole_someone_elses_ip_but_own_ip_also_stolen %}
<div class="row">
<div>{{vm['id']}} ({{vm['email']}}): current_ipv4={{vm['current_ipv4']}} desired_ipv4={{vm['desired_ipv4']}}</div>
<form method="post">
<input type="hidden" name="action" value="stop_and_expire"></input>
<input type="hidden" name="id" value="{{vm['id']}}"></input>
<input type="hidden" name="csrf-token" value="{{ csrf_token }}"/>
<input type="submit" value="🛑 STOP AND EXPIRE DHCP LEASE"/>
</form>
</div>
{% endfor %}
<hr/>
{% endif %}
<div class="third-margin">
<div class="row">
<h1>📢 Admin Megaphone: Email All Users who have Active Capsuls 📢</h1>
</div>
<div class="row">
<form method="post" class="megaphone">
<input type="hidden" name="action" value="megaphone"></input>
<input type="hidden" name="csrf-token" value="{{ csrf_token }}"/>
<input type="text" name="subject" placeholder="Capsul Maintenance blahblahblah" />
<textarea name="body" placeholder="Hello, ..."></textarea>
<input type="submit" value="SEND"/>
</form>
</div>
</div>
{% endblock %}
{% block pagesource %}/templates/admin.html{% endblock %}