def _add_read_only_instances(request, database): try: check_is_database_dead(database.id, 'Add read-only instances') check_is_database_enabled(database.id, 'Add read-only instances') except DisabledDatabase as err: messages.add_message(request, messages.ERROR, err.message) return if not database.plan.replication_topology.has_horizontal_scalability: messages.add_message( request, messages.ERROR, 'Database topology do not have horizontal scalability') return if 'add_read_qtd' not in request.POST: messages.add_message(request, messages.ERROR, 'Quantity is required') return max_read_hosts = Configuration.get_by_name_as_int('max_read_hosts', 5) qtd_new_hosts = int(request.POST['add_read_qtd']) current_read_nodes = len(database.infra.instances.filter(read_only=True)) total_read_hosts = qtd_new_hosts + current_read_nodes if total_read_hosts > max_read_hosts: messages.add_message( request, messages.ERROR, 'Current limit of read only hosts is {} and you are trying to setup {}' .format(max_read_hosts, total_read_hosts)) return TaskRegister.database_add_instances(database=database, user=request.user, number_of_instances=qtd_new_hosts)
def check_database_status(self): try: if not self.retry: check_is_database_dead(self.database.id, 'Upgrade Database') check_is_database_enabled(self.database.id, 'Upgrade Database', ['notification.tasks.upgrade_database']) return (True, '') except DisabledDatabase as err: return (False, err.message)
def check_database_status(self): try: check_is_database_dead(self.database.id, 'Remove read-only instances') check_is_database_enabled( self.database.id, 'Remove read-only instances', ['notification.tasks.remove_readonly_instance']) return (True, '') except DisabledDatabase as err: return (False, err.message)
def check_database_status(self): try: check_is_database_dead(self.database.id, 'Add read-only instances') check_is_database_enabled( self.database.id, 'Add read-only instances', ['notification.tasks.add_instances_to_database', 'notification.tasks.add_instances_to_database_rollback'] ) return (True, '') except DisabledDatabase as err: return (False, err.message)
def _vm_resize(request, database): try: check_is_database_dead(database.id, 'VM resize') check_is_database_enabled(database.id, 'VM resize') except DisabledDatabase as err: messages.add_message(request, messages.ERROR, err.message) else: offering = Offering.objects.get(id=request.POST.get('vm_offering')) Database.resize( database=database, offering=offering, user=request.user, )
def database_resize_view(self, request, database_id): try: check_is_database_dead(database_id, 'VM resize') database = check_is_database_enabled(database_id, 'VM resize') from dbaas_cloudstack.models import CloudStackPack offerings = CloudStackPack.objects.filter( offering__region__environment=database.environment, engine_type__name=database.engine_type).exclude( offering__serviceofferingid=database.offering_id) check_resize_options(database_id, offerings) except (DisabledDatabase, NoResizeOption) as err: self.message_user(request, err.message, messages.ERROR) return HttpResponseRedirect(err.url) form = None if request.method == 'POST': # If the form has been submitted... form = ResizeDatabaseForm( request.POST, initial={ "database_id": database_id, "original_offering_id": database.offering_id }, ) # A form bound to the POST data if form.is_valid(): # All validation rules pass cloudstackpack = CloudStackPack.objects.get( id=request.POST.get('target_offer')) Database.resize( database=database, cloudstackpack=cloudstackpack, user=request.user, ) url = reverse('admin:notification_taskhistory_changelist') # Redirect after POST return HttpResponseRedirect(url + "?user=%s" % request.user.username) else: form = ResizeDatabaseForm(initial={ "database_id": database_id, "original_offering_id": database.offering_id }, ) # An unbound form return render_to_response("logical/database/resize.html", locals(), context_instance=RequestContext(request))
def _vm_resize(request, database): try: check_is_database_dead(database.id, 'VM resize') check_is_database_enabled(database.id, 'VM resize') except DisabledDatabase as err: messages.add_message(request, messages.ERROR, err.message) else: cloudstack_pack = CloudStackPack.objects.get( id=request.POST.get('vm_offering')) Database.resize( database=database, cloudstackpack=cloudstack_pack, user=request.user, )
def _vm_resize(request, database): try: check_is_database_dead(database.id, 'VM resize') check_is_database_enabled(database.id, 'VM resize') except DisabledDatabase as err: messages.add_message(request, messages.ERROR, err.message) else: offering = Offering.objects.get( id=request.POST.get('vm_offering') ) Database.resize( database=database, offering=offering, user=request.user, )
def database_make_backup(request, context, database): error = None try: check_is_database_dead(database.id, 'Backup') check_is_database_enabled(database.id, 'Backup') except DisabledDatabase as err: error = err.message if not context['is_dba']: error = "Only DBA's can do database backup" if error: messages.add_message(request, messages.ERROR, error) else: TaskRegister.database_backup(database=database, user=request.user.username) return HttpResponseRedirect( reverse('admin:logical_database_backup', kwargs={'id': database.id}))
def database_make_backup(request, context, database): error = None try: check_is_database_dead(database.id, 'Backup') check_is_database_enabled(database.id, 'Backup') except DisabledDatabase as err: error = err.message if not context['is_dba']: error = "Only DBA's can do database backup" if error: messages.add_message(request, messages.ERROR, error) else: TaskRegister.database_backup( database=database, user=request.user.username ) return HttpResponseRedirect( reverse('admin:logical_database_backup', kwargs={'id': database.id}) )
def _add_read_only_instances(request, database): try: check_is_database_dead(database.id, 'Add read-only instances') check_is_database_enabled(database.id, 'Add read-only instances') except DisabledDatabase as err: messages.add_message(request, messages.ERROR, err.message) return if not database.plan.replication_topology.has_horizontal_scalability: messages.add_message( request, messages.ERROR, 'Database topology do not have horizontal scalability' ) return if 'add_read_qtd' not in request.POST: messages.add_message(request, messages.ERROR, 'Quantity is required') return max_read_hosts = Configuration.get_by_name_as_int('max_read_hosts', 5) qtd_new_hosts = int(request.POST['add_read_qtd']) current_read_nodes = len(database.infra.instances.filter(read_only=True)) total_read_hosts = qtd_new_hosts + current_read_nodes if total_read_hosts > max_read_hosts: messages.add_message( request, messages.ERROR, 'Current limit of read only hosts is {} and you are trying to setup {}'.format( max_read_hosts, total_read_hosts ) ) return TaskRegister.database_add_instances( database=database, user=request.user, number_of_instances=qtd_new_hosts )