def aggregate_add_servers(request, agg_id): """Show a page that allows user to add SSH servers to the aggregate.""" agg = get_object_or_404(SSHAggregate, id=agg_id) servers = SSHServer.objects.filter(aggregate__id=agg_id) ServerFormSet = modelformset_factory( SSHServer, can_delete=True, extra=3, fields=["name", "ip_address", "ssh_port"], ) if request.method == "POST": formset = ServerFormSet( request.POST, queryset=servers) if formset.is_valid(): instances = formset.save(commit=False) for instance in instances: instance.aggregate = agg instance.save() formset.save_m2m() post_message_to_current_user( "Successfully added/updated servers "\ "to aggregate %s" % agg.name, msg_type=DatedMessage.TYPE_SUCCESS) return HttpResponseRedirect(request.path) else: formset = ServerFormSet(queryset=servers) return simple.direct_to_template( request, template="sshaggregate/aggregate_add_servers.html", extra_context={"aggregate": agg, "formset": formset})
def _op_user(self, op, server, cmd_subs, quiet=False): """common code for adding/removing users.""" pkey_f = StringIO(self.private_key) pkey = RSAKey.from_private_key(pkey_f) pkey_f.close() cmd = getattr(self, "%s_user_command" % op) % cmd_subs cmd = cmd + "; echo $?" out, err = server.exec_command( cmd, username=str(self.admin_username), pkey=pkey, ) lines = out.strip().split("\n") ret = int(lines[-1]) if ret != 0: error = "".join(lines[:-1]) if not quiet: # msg example msg = "Failed to %s user on %s. Output was:\n%s" \ % (op, server, error), post_message_to_current_user( msg, msg_type=DatedMessage.TYPE_ERROR, ) # end msg example raise Exception(msg)
def _op_user(self, op, server, cmd_subs, quiet=False): """common code for adding/removing users.""" pkey_f = StringIO(self.private_key) pkey = RSAKey.from_private_key(pkey_f) pkey_f.close() cmd = getattr(self, "%s_user_command" % op) % cmd_subs cmd = cmd + "; echo $?" out, err = server.exec_command( cmd, username=str(self.admin_username), pkey=pkey, ) lines = out.strip().split("\n") ret = int(lines[-1]) if ret != 0: error = "".join(lines[:-1]) if not quiet: # msg example msg = "Failed to %s user on %s. Output was:\n%s" \ % (op, server, error), post_message_to_current_user( msg, msg_type=DatedMessage.TYPE_ERROR, ) # end msg example raise Exception(msg)
def aggregate_add_servers(request, agg_id): """Show a page that allows user to add SSH servers to the aggregate.""" agg = get_object_or_404(SSHAggregate, id=agg_id) servers = SSHServer.objects.filter(aggregate__id=agg_id) ServerFormSet = modelformset_factory( SSHServer, can_delete=True, extra=3, fields=["name", "ip_address", "ssh_port"], ) if request.method == "POST": formset = ServerFormSet(request.POST, queryset=servers) if formset.is_valid(): instances = formset.save(commit=False) for instance in instances: instance.aggregate = agg instance.save() formset.save_m2m() post_message_to_current_user( "Successfully added/updated servers "\ "to aggregate %s" % agg.name, msg_type=DatedMessage.TYPE_SUCCESS) return HttpResponseRedirect(request.path) else: formset = ServerFormSet(queryset=servers) return simple.direct_to_template( request, template="sshaggregate/aggregate_add_servers.html", extra_context={ "aggregate": agg, "formset": formset })