Exemplo n.º 1
0
class NICsNTap(npyscreen.ActionForm):
    """ For listing all available network interfaces """
    def create(self):
        self.add_handlers({'^T': self.quit, '^Q': self.quit})
        self.add(npyscreen.Textfield,
                 value='List all avilable network interfaces',
                 editable=False,
                 color='STANDOUT')

        self.nextrely += 1

        try:
            self.api_action = Action()
            url = self.api_action.get_vent_tool_url('network-tap')[1] + '/nics'
            request = self.api_action.get_request(url)

            if request[0]:
                box = self.add(npyscreen.BoxTitle,
                               name='Available Network Interfaces',
                               max_height=40)
                request = ast.literal_eval(str(request[1]))
                data = [d for d in request[1].split('\n')]
                box.values = data
            else:
                npyscreen.notify_confirm('Failure: ' + request[1])

        except Exception as e:  # pragma no cover
            npyscreen.notify_confirm('Failure: ' + str(e))

    def quit(self, *args, **kwargs):
        """ Overriden to switch back to MAIN form """
        self.parentApp.switchForm('MAIN')

    def on_cancel(self):
        """ When user cancels, return to MAIN """
        self.quit()

    def on_ok(self):
        self.quit()
Exemplo n.º 2
0
class ListNTap(npyscreen.ActionForm):
    """ For listing all network tap capture containers """
    def create(self):
        self.add_handlers({"^T": self.quit, "^Q": self.quit})
        self.add(npyscreen.Textfield,
                 value='List all network tap capture containers',
                 editable=False,
                 color="STANDOUT")

        self.nextrely += 1

        try:
            self.api_action = Action()
            url = self.api_action.get_vent_tool_url('network-tap')[1] + '/list'
            request = self.api_action.get_request(url)

            if request[0]:
                box = self.add(npyscreen.BoxTitle,
                               name="Network Tap Capture Containers",
                               max_height=40)
                request = ast.literal_eval(str(request[1]))
                data = [d for d in list(request[1])]
                box.values = data
            else:
                npyscreen.notify_confirm("Failure: " + request[1])

        except Exception as e:  # pragma no cover
            npyscreen.notify_confirm("Failure: " + str(e))

    def quit(self, *args, **kwargs):
        """ Overriden to switch back to MAIN form """
        self.parentApp.switchForm("MAIN")

    def on_cancel(self):
        """ When user cancels, return to MAIN """
        self.quit()

    def on_ok(self):
        self.quit()
Exemplo n.º 3
0
class ActionNTap(npyscreen.ActionForm):
    """ Base class to inherit from. """
    def __init__(self, n_action=None, *args, **kwargs):
        self.n_action = n_action
        super(ActionNTap, self).__init__(*args, **kwargs)

    def create(self):
        self.add_handlers({'^T': self.quit, '^Q': self.quit})
        self.add(npyscreen.Textfield,
                 value=self.n_action + ' a network tap capture container.',
                 editable=False,
                 color='STANDOUT')
        self.add(npyscreen.Textfield,
                 value='Choose a container to ' + self.n_action,
                 editable=False,
                 color='STANDOUT')

        self.nextrely += 1

        try:
            self.api_action = Action()

            # display all containers by sending a get request to ntap/list
            # nlist returns tuple and get_request returns tuple
            url = self.api_action.get_vent_tool_url('network-tap')[1] + '/list'
            request = self.api_action.get_request(url)

            # create selection for containers
            if request[0]:
                request = ast.literal_eval(str(request[1]))
                data = [d for d in list(request[1])]
                self.ms = self.add(npyscreen.TitleMultiSelect,
                                   max_height=20,
                                   name='Choose one or more containers to ' +
                                   self.n_action,
                                   values=data)

            else:
                npyscreen.notify_confirm('Failure: ' + str(request[1]))

        except Exception as e:  # pragma: no cover
            npyscreen.notify_confirm('Failure: ' + str(e))

    def on_ok(self):
        # error check to make sure at least one box was selected
        if not self.ms.value:
            npyscreen.notify_confirm('Please select at least one container.',
                                     form_color='CAUTION')

        # format the data into something ncontrol likes
        else:
            payload = {
                'id': list(x['id'] for x in self.ms.get_selected_objects())
            }

        # grab the url that network-tap is listening to
        try:
            npyscreen.notify_wait('Please wait. Currently working')
            self.api_action = Action()
            url = self.api_action.get_vent_tool_url('network-tap')[1] + '/' \
                + self.n_action
            request = self.api_action.post_request(url, payload)

            if request[0]:
                npyscreen.notify_confirm('Success: ' + str(request[1]))
                self.quit()

            else:
                npyscreen.notify_confirm('Failure: ' + str(request[1]))

        except Exception as e:  # pragma: no cover
            npyscreen.notify_confirm('Failure: ' + str(e))

    def quit(self, *args, **kwargs):
        """ Overriden to switch back to MAIN form """
        self.parentApp.switchForm('MAIN')

    def on_cancel(self):
        """ When user cancels, return to MAIN """
        self.quit()