Пример #1
0
 def recreate_slave(self, request, pk=None):
     host = self.get_object()
     if not host.is_database:
         return self._render_error(
             "The host must be Database instance",
             422
         )
     serializer = self.get_serializer()
     database = serializer.get_database(host)
     if database.is_being_used_elsewhere():
         return self._render_error(
             "Database {} is being used for another task".format(database),
             422
         )
     if not (database.databaseinfra.plan.replication_topology
             .can_recreate_slave):
         return self._render_error(
             "This topology cant recreate slave",
             422
         )
     instance = host.database_instance()
     driver = instance.databaseinfra.get_driver()
     if driver.check_instance_is_master(instance):
         return self._render_error(
             "Host is master. The host must be Slave",
             422
         )
         raise Exception()
     TaskRegister.recreate_slave(host=host, user=request.user)
     return Response(
         {'hostname': host.hostname, 'id': host.id},
         status=204
     )
 def retry_view(self, request, manager_id):
     retry_from = get_object_or_404(RecreateSlave, pk=manager_id)
     success, redirect = self.check_status(request, retry_from, 'retry')
     if not success:
         return redirect
     TaskRegister.recreate_slave(host=retry_from.host,
                                 user=request.user,
                                 since_step=retry_from.current_step,
                                 step_manager=retry_from)
     return self.redirect_to_database(retry_from)