Пример #1
0
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})
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
0
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
        })