Skip to content

Commit

Permalink
Merge pull request #894 from globocom/dev
Browse files Browse the repository at this point in the history
Dev > Master
  • Loading branch information
Erkmann committed May 19, 2023
2 parents 82947c2 + 20f0fd0 commit 958cc3f
Show file tree
Hide file tree
Showing 13 changed files with 247 additions and 86 deletions.
5 changes: 5 additions & 0 deletions dbaas/drivers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,11 @@ def get_slave_instances(self, ):

return instances

def get_temporary_instances(self):
instances = [instance if instance.temporary is True else None
for instance in self.databaseinfra.instances.all()]
return filter(None, instances)

def start_slave(self, instance):
pass

Expand Down
8 changes: 5 additions & 3 deletions dbaas/drivers/replication_topologies/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def get_resize_steps(self):
'workflow.steps.util.infra.Offering',
'workflow.steps.util.vm.InstanceIsSlave',
'workflow.steps.util.zabbix.EnableAlarms',
)}]
)}] + self.get_configure_db_params_steps()

def get_upgrade_disk_type_steps(self):
return [{
Expand Down Expand Up @@ -268,7 +268,8 @@ def get_add_database_instances_steps(self):
self.get_add_database_instances_steps_description():
self.get_add_database_instances_first_steps() +
self.get_add_database_instances_middle_steps() +
self.get_add_database_instances_last_steps()
self.get_add_database_instances_last_steps() +
self.get_configure_db_params_steps()
}]

def get_remove_readonly_instance_steps(self):
Expand Down Expand Up @@ -384,7 +385,7 @@ def get_reinstallvm_steps(self):
'workflow.steps.util.database.CheckIsUp',
'workflow.steps.util.metric_collector.RestartTelegraf',
),
}] + self.get_reinstallvm_steps_final()
}] + self.get_reinstallvm_steps_final() + self.get_configure_db_params_steps()

def get_reinstallvm_ssl_steps(self):
return ()
Expand Down Expand Up @@ -724,6 +725,7 @@ def get_stop_database_vm_steps(self):
'workflow.steps.util.database.checkAndFixMySQLReplication',
)}, {
'Stopping database': (
'workflow.steps.util.mysql.SaveMysqlBinlogToStopDatabase',
'workflow.steps.util.database.Stop',
'workflow.steps.util.database.StopRsyslog',
'workflow.steps.util.database.CheckIsDown',
Expand Down
23 changes: 16 additions & 7 deletions dbaas/drivers/replication_topologies/mongodb.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,9 @@ def get_configure_ssl_dns_steps(self):
'workflow.steps.util.ssl.SetSSLFilesAccessMongoDBIfConfigured',
'workflow.steps.util.ssl.UpdateExpireAtDate',
)

def get_configure_db_params_steps(self):
return []


class MongoDBSingle(BaseMongoDB):
Expand Down Expand Up @@ -285,7 +288,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)}
]
] + self.get_configure_db_params_steps()

def get_host_migrate_steps(self):
return [{
Expand Down Expand Up @@ -748,7 +751,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_clone_steps(self):
return [{
Expand Down Expand Up @@ -915,10 +918,13 @@ def get_recreate_slave_steps(self):
'workflow.steps.util.zabbix.EnableAlarms',
'workflow.steps.util.database.ConfigurePrometheusMonitoring'
)
}]
}] + self.get_configure_db_params_steps()

def get_auto_upgrade_database_vm_offering(self):
return [{
'Take new Snapshot': (
'workflow.steps.util.volume_provider.TakeSnapshotForSecondaryOrReadOnly',
)}, {
'Create new VM': (
'workflow.steps.util.infra.OfferingAutoUpgrade',
'workflow.steps.util.host_provider.AllocateIPTemporaryInstance',
Expand Down Expand Up @@ -1010,7 +1016,7 @@ def get_auto_upgrade_database_vm_offering(self):
'workflow.steps.util.host_provider.DestroyVirtualMachineTemporaryInstance',
'workflow.steps.util.host_provider.DestroyIPTemporaryInstance',
)}
]
] + self.get_configure_db_params_steps()

def get_host_migrate_steps(self):
return [{
Expand Down Expand Up @@ -1565,7 +1571,7 @@ def get_resize_steps(self):
'workflow.steps.util.infra.Offering',
'workflow.steps.util.vm.InstanceIsSlave',
# 'workflow.steps.util.zabbix.EnableAlarms',
)}]
)}] + self.get_configure_db_params_steps()

def get_deploy_steps(self):
return [{
Expand Down Expand Up @@ -1629,7 +1635,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()


class MongoGenericGCE(object):
Expand Down Expand Up @@ -1663,7 +1669,10 @@ def get_recreate_slave_steps(self):
'workflow.steps.util.zabbix.EnableAlarms',
'workflow.steps.util.database.ConfigurePrometheusMonitoring'
)
}]
}] + self.get_configure_db_params_steps()

def get_configure_db_params_steps(self):
return []

def get_replica_migration_steps(self):
return [{
Expand Down
12 changes: 6 additions & 6 deletions dbaas/drivers/replication_topologies/mysql.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_configure_db_params_steps(self):
return [{
Expand Down Expand Up @@ -608,7 +608,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_clone_steps(self):
return [{
Expand Down Expand Up @@ -894,7 +894,7 @@ def get_reinstallvm_steps(self):
'workflow.steps.util.database.CheckIsUp',
'workflow.steps.util.metric_collector.RestartTelegraf',
),
}] + self.get_reinstallvm_steps_final()
}] + self.get_reinstallvm_steps_final() + self.get_configure_db_params_steps()

def get_upgrade_steps(self):
return [{
Expand Down Expand Up @@ -1175,7 +1175,7 @@ def get_recreate_slave_steps(self):
'workflow.steps.util.zabbix.EnableAlarms',
'workflow.steps.util.database.ConfigurePrometheusMonitoring'
)
}]
}] + self.get_configure_db_params_steps()

def get_base_host_migrate_steps(self):
return (
Expand Down Expand Up @@ -2490,7 +2490,7 @@ def get_recreate_slave_steps(self):
'workflow.steps.util.zabbix.EnableAlarms',
'workflow.steps.util.database.ConfigurePrometheusMonitoring'
)
}]
}] + self.get_configure_db_params_steps()

def get_reinstallvm_steps(self):
return [{
Expand Down Expand Up @@ -2528,4 +2528,4 @@ def get_reinstallvm_steps(self):
'workflow.steps.util.database.CheckIsUp',
'workflow.steps.util.metric_collector.RestartTelegraf',
),
}] + self.get_reinstallvm_steps_final()
}] + self.get_reinstallvm_steps_final() + self.get_configure_db_params_steps()
10 changes: 7 additions & 3 deletions dbaas/drivers/replication_topologies/redis.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# -*- coding: utf-8 -*-
from base import BaseTopology, InstanceDeploy
from physical.models import Instance
Expand Down Expand Up @@ -56,6 +57,9 @@ def get_database_change_persistence_steps(self):
'workflow.steps.util.zabbix.EnableAlarms',
)
}]

def get_configure_db_params_steps(self):
return []


class RedisSingle(BaseRedis):
Expand Down Expand Up @@ -123,7 +127,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_clone_steps(self):
return [{
Expand Down Expand Up @@ -494,7 +498,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_clone_steps(self):
return [{
Expand Down Expand Up @@ -824,7 +828,7 @@ def get_deploy_steps(self):
'Save Snapshot': (
'workflow.steps.util.database.MakeSnapshot',
)
}]
}] + self.get_configure_db_params_steps()

def get_filer_migrate_steps(self):
return [{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<div class="panel-heading">
<h3 class="panel-title">Custom Parameters</h3>
{% if show_auto_configure_btn %}
<a href="{% url 'auto_configure_db_params_btn' database.id %}" target="_blank" class="btn btn-primary">AutoConfigure DB Params</a>
<a href="#" data-toggle="modal" id="autoconfig_btn" data-target="#autoconfig_params" target="_blank" class="btn btn-primary">AutoConfigure DB Params</a>
<em>* Atualiza somente o max_connections (MySQL) e não gera downtime!</em>
{% endif %}
</div>
Expand Down Expand Up @@ -166,6 +166,8 @@ <h3 class="panel-title">Custom Parameters</h3>
</div>
</div>
{% endif %}
{% include "admin/confirmation_modal.html" with modal_id="autoconfig_params" confirmation_message="Are you sure you want to AutoConfigure database parameters now?" box_title="AutoConfigure Params" button_type="button" button_value="Auto Configure Parameters" button_name="autoconfig_params_confirm" id_optional="id=id_autoconfig_params" %}

{% endblock %}

{% block js_footer %}
Expand All @@ -174,6 +176,7 @@ <h3 class="panel-title">Custom Parameters</h3>
<script src="{% static "assets/js/bignumber.min.js" %}"></script>
<script src="{% static "js/parameters_validator.js" %}"></script>
<script type="text/javascript">
var database_id = '{{ database.id }}';

function resetDefault(checkbox_control, id)
{
Expand Down Expand Up @@ -241,8 +244,31 @@ <h3 class="panel-title">Custom Parameters</h3>
});
$("#id_change_parameter_yes").keyup();

running_update = false

})

$("#id_autoconfig_params").on("click", function() {
if (running_update){
return;
}
running_update = true;
$("#id_autoconfig_params").attr('disabled','disabled');
url = "/logical/autoconfigure_db_params/"+ database_id;

jQuery.ajax({
"dataType": "json",
"url": url,
"type": "GET"
}).success(function() {
running_update = false;
window.location.reload();

}).error(function() {
alert("invalid server response")
});
});

function check_static_parameter_changed()
{
var inputs = $("input, select");
Expand Down
65 changes: 35 additions & 30 deletions dbaas/logical/templates/logical/database/details/resizes_tab.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,40 +45,14 @@
<div class="control-group">
<div class="control-label"><label>AutoResize:</label></div>
<div class="controls">
<a href="{% url 'resize_vm_from_btn' database.id 'cpu_ram' %}" target="_blank" class="btn btn-success">Resize CPU & RAM</a>
<a href="{% url 'resize_vm_from_btn' database.id 'cpu' %}" target="_blank" class="btn btn-primary">Resize CPU</a>
<a href="{% url 'resize_vm_from_btn' database.id 'ram' %}" target="_blank" class="btn btn-info">Resize RAM</a>
<a href="#" target="_blank" class="btn btn-success autoupgrade_database_btn" data-toggle="modal" id="cpu_ram" data-target="#autoupgrade_vm">Resize CPU & RAM</a>
<a href="#" target="_blank" class="btn btn-primary autoupgrade_database_btn" data-toggle="modal" id="cpu" data-target="#autoupgrade_vm">Resize CPU</a>
<a href="#" target="_blank" class="btn btn-info autoupgrade_database_btn" data-toggle="modal" id="ram" data-target="#autoupgrade_vm">Resize RAM</a>
</div>
</div>
{% endif %}
{% endif %}
<!-- <div class="control-group">-->
<!-- <div class="control-label"><label>Disk offering:</label></div>-->
<!-- <div class="controls">-->
<!-- <select id="id_disk_offering" name="disk_offering">-->
<!-- {% for disk_offering in disk_offerings %}-->
<!-- <option value="{{disk_offering.id}}"-->
<!-- {% if disk_offering == database.infra.disk_offering %}-->
<!-- selected="selected">*-->
<!-- {% else %}-->
<!-- >-->
<!-- {% endif %}-->
<!-- {{disk_offering}}-->
<!-- </option>-->
<!-- {% endfor %}-->
<!-- </select>-->
<!-- <button data-toggle="modal" id="disk_resize_btn" data-target="#resize_disk">Resize</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="control-group">-->
<!-- <div class="controls">-->
<!-- <label class="checkbox">-->
<!-- <input {% if database.disk_auto_resize %} checked="checked" {% endif %} id="id_disk_auto_resize" name="disk_auto_resize" type="checkbox"/>-->
<!-- <span><label class="vCheckboxLabel" for="id_disk_auto_resize">Disk auto resize</label></span>-->
<!-- </label>-->
<!-- <p class="help-block">When marked, the disk will be resized automatically.</p>-->
<!-- </div>-->
<!-- </div>-->

{% if available_patches %}
<div class="control-group">
<div class="control-label"><label>Patch upgrade:</label></div>
Expand Down Expand Up @@ -114,6 +88,7 @@

{% include "admin/confirmation_modal_input.html" with modal_id="resize_vm" title="Resize VM" body_text="logical/modal/vm_offering_body.html" input_name="resize_vm_yes" submit_button_value="Resize" submit_button_name="vm_resize" submit_button_id="id_resize_vm_btn_modal" %}

{% include "admin/confirmation_modal.html" with modal_id="autoupgrade_vm" confirmation_message="Are you sure you want AutoUpgrade database offer now?" box_title="AutoUpgrade Offer" button_type="button" button_value="AutoUpgrade Database" button_name="autoupgrade_db_confirm" id_optional="id=id_autoupgrade_db" %}

{% endblock %}

Expand All @@ -122,6 +97,9 @@
{{ block.super }}

<script>
var database_id = '{{ database.id }}';
var running_update = false;

function status_resize(btn_id, current_value, selected_value) {
btn = document.getElementById(btn_id)
btn.disabled = current_value == selected_value
Expand All @@ -146,6 +124,32 @@
}
});
}

$(".autoupgrade_database_btn").click(function() {
$("#id_autoupgrade_db").val($(this).attr('id'));
});

$("#id_autoupgrade_db").on("click", function() {
if (running_update){
return;
}
running_update = true;
$("#id_autoupgrade_db").attr('disabled','disabled');
value = $("#id_autoupgrade_db").val();
url = "/logical/resize_vm/"+ database_id + "/" + value;

jQuery.ajax({
"dataType": "json",
"url": url,
"type": "GET"
}).success(function(){
running_update = false;
window.location.reload();
}).error(function() {
alert("invalid server response");
});
});

jQuery(document).ready(function($) {
document.onkeydown = function () {
switch (event.keyCode) {
Expand All @@ -157,6 +161,7 @@
}
}
}

var currentForm;

$("#id_disk_offering").on("change", function() {
Expand Down

0 comments on commit 958cc3f

Please sign in to comment.