Beispiel #1
0
    def do_disable(self, line):
        """
        Disable a device. ID of the device needs to be provided
        """
        device_id = line
        if device_id not in self.device_ids():
            self.poutput('Error: There is no such device')
            return
        try:
            stub = self.get_stub()
            device = stub.GetDevice(voltha_pb2.ID(id=device_id))
            if device.admin_state == voltha_pb2.AdminState.DISABLED:
                self.poutput('Error: Device is already disabled')
                return
            stub.DisableDevice(voltha_pb2.ID(id=device_id))
            self.poutput('disabling {}'.format(device_id))

            # Do device query and verify that the device admin status is
            # DISABLED and Operational Status is unknown
            device = stub.GetDevice(voltha_pb2.ID(id=device_id))
            if device.admin_state == voltha_pb2.AdminState.DISABLED:
                self.poutput('disabled successfully {}'.format(device_id))
            else:
                self.poutput('disabling failed {}.  Admin State:{} '
                             'Operation State: {}'.format(
                                 device_id, device.admin_state,
                                 device.oper_status))
        except Exception as e:
            self.poutput('Error disabling {}.  Error:{}'.format(device_id, e))
Beispiel #2
0
    def do_delete(self, line, opts):
        if not opts.filter_id:
            self.poutput(self.colorize('Error: ', 'red') + 'Specify ' + \
                         self.colorize(self.colorize('"filter id"', 'blue'),
                                       'bold') + ' to update')
            return

        stub = self.get_stub()
        stub.DeleteAlarmFilter(voltha_pb2.ID(id=opts.filter_id))
Beispiel #3
0
    def get_device_mib(self, device_id, depth=-1):
        stub = self.get_stub()

        try:
            res = stub.GetMibDeviceData(voltha_pb2.ID(id=device_id),
                                        metadata=(('get-depth', str(depth)), ))
        except Exception as e:
            pass

        return res
Beispiel #4
0
 def do_delete(self, line):
     """
     Deleting a device. ID of the device needs to be provided
     """
     device_id = line or self.default_device_id
     self.poutput('deleting {}'.format(device_id))
     try:
         stub = self.get_stub()
         stub.DeleteDevice(voltha_pb2.ID(id=device_id))
         self.poutput('deleted {}'.format(device_id))
     except Exception as e:
         self.poutput('Error deleting {}.  Error:{}'.format(device_id, e))
Beispiel #5
0
    def do_show(self, line, opts):
        stub = self.get_stub()

        if not opts.filter_id:
            result = stub.ListAlarmFilters(Empty())
            print_pb_list_as_table("Alarm Filters:", result.filters, {},
                                   self.poutput)
        else:
            result = stub.GetAlarmFilter(voltha_pb2.ID(id=opts.filter_id))
            print_pb_list_as_table(
                "Rules for Filter ID = {}:".format(opts.filter_id),
                result.rules, {}, self.poutput)
Beispiel #6
0
    def do_enable(self, line):
        """
        Enable a device. If the <id> is not provided, it will be on the last
        pre-provisioned device.
        """
        device_id = line or self.default_device_id
        if device_id not in self.device_ids():
            self.poutput('Error: There is no such preprovisioned device')
            return

        try:
            stub = self.get_stub()
            device = stub.GetDevice(voltha_pb2.ID(id=device_id))
            if device.admin_state == voltha_pb2.AdminState.ENABLED:
                if device.oper_status != voltha_pb2.OperStatus.ACTIVATING:
                    self.poutput('Error: Device is already enabled')
                    return
            else:
                stub.EnableDevice(voltha_pb2.ID(id=device_id))
                self.poutput('enabling {}'.format(device_id))

            while True:
                device = stub.GetDevice(voltha_pb2.ID(id=device_id))
                # If this is an OLT then acquire logical device id
                if device.oper_status == voltha_pb2.OperStatus.ACTIVE:
                    if device.type.endswith('_olt'):
                        assert device.parent_id
                        self.default_logical_device_id = device.parent_id
                        self.poutput('success (logical device id = {})'.format(
                            self.default_logical_device_id))
                    else:
                        self.poutput('success (device id = {})'.format(
                            device.id))
                    break
                self.poutput('waiting for device to be enabled...')
                sleep(.5)
        except Exception as e:
            self.poutput('Error enabling {}.  Error:{}'.format(device_id, e))
Beispiel #7
0
 def do_self_test(self, line):
     """
     Self Test a device. ID of the device needs to be provided
     """
     device_id = line or self.default_device_id
     self.poutput('Self Testing {}'.format(device_id))
     try:
         stub = self.get_stub()
         res = stub.SelfTest(voltha_pb2.ID(id=device_id))
         self.poutput('Self Tested {}'.format(device_id))
         self.poutput(dumps(pb2dict(res), indent=4))
     except Exception as e:
         self.poutput('Error in self test {}.  Error:{}'.format(
             device_id, e))
Beispiel #8
0
 def do_xpon(self, line):
     """xpon <optional> [device_ID] - Enter xpon level command mode"""
     device_id = line.strip()
     if device_id:
         stub = self.get_stub()
         try:
             res = stub.GetDevice(voltha_pb2.ID(id=device_id))
         except Exception:
             self.poutput(
                 self.colorize('Error: ', 'red') + 'No device id ' +
                 self.colorize(device_id, 'blue') + ' is found')
             return
     sub = XponCli(self.get_channel, device_id)
     sub.cmdloop()
Beispiel #9
0
 def do_img_dnld_list(self, line):
     """
     List all image download records for a given device
     """
     device = self.get_device(depth=-1)
     device_id = device.id
     self.poutput('Get all img dnld records {}'.format(device_id))
     try:
         stub = self.get_stub()
         img_dnlds = stub.ListImageDownloads(voltha_pb2.ID(id=device_id))
     except Exception, e:
         self.poutput('Error list img dnlds {}.  Error:{}'.format(
             device_id, e))
         return
Beispiel #10
0
    def get_logical_ports(self, logical_device_id):
        """
        Return the NNI port number and the first usable UNI port of logical
        device, and the vlan associated with the latter.
        """
        stub = self.get_stub()
        ports = stub.ListLogicalDevicePorts(
            voltha_pb2.ID(id=logical_device_id)).items
        nni = None
        unis = []
        for port in ports:
            if port.root_port:
                assert nni is None, "There shall be only one root port"
                nni = port.ofp_port.port_no
            else:
                uni = port.ofp_port.port_no
                uni_device = self.get_device(port.device_id)
                vlan = uni_device.vlan
                unis.append((uni, vlan))

        assert nni is not None, "No NNI port found"
        assert unis, "Not a single UNI?"

        return nni, unis
Beispiel #11
0
 def get_device(self, device_id, depth=0):
     stub = self.get_stub()
     res = stub.GetDevice(voltha_pb2.ID(id=device_id),
                          metadata=(('get-depth', str(depth)), ))
     return res
Beispiel #12
0
 def get_device(self, id):
     stub = self.get_stub()
     return stub.GetDevice(voltha_pb2.ID(id=id))