[6683] Removing unnecessary files and update gitignore

VOL-507, VOL-463: Protobuf upgrade to 3.3 and Chameleon Removal

Update the Protobuf version from 3.1 to 3.3 to alleviate
a protobuf issue when loading protobuf extensions.  The following
tests have been performed:
- Create a local Vagrant VM
- Voltha ensemble startup and check for errors/exceptions
- Manual compilations of the protos in voltha, ofagent, netconf and
chameleon directory
- Manual tests with ONOS/Voltha/Ponsim using Netconf, Curl and CLI
- Run the integration tests (known issues have Jiras already raised
against them.
- Run the make jenkins-test and make utest-with-coverage

Chameleon has been removed entirely from Voltha projects. Basic tests
have run to verify chameleon dependency has been removed.  Some
documents (like README) will need to be changed under a separate Jiras
as they are referenced in different adapters.  Some integration tests
will also need to be updated as well.

Change-Id: I2b266719a6825fb07ece3a79f7f81881ab3b9761
diff --git a/cli/table.py b/cli/table.py
index c3cf94d..9053594 100644
--- a/cli/table.py
+++ b/cli/table.py
@@ -97,24 +97,42 @@
     for row, obj in enumerate(items):
         assert isinstance(obj, Message)
 
+        def set_row(_row, field, field_name, value, t, prefix,
+                      fields_to_omit, number):
+            fname = prefix + field.name
+            if fname in fields_to_omit:
+                return
+            if isinstance(value, Message):
+                add(_row, value, fname + '.',
+                    100 * (number + field.number))
+            else:
+                t.add_cell(_row, number + field.number, fname,
+                           field_name)
+
         def add(_row, pb, prefix='', number=0):
             d = pb2dict(pb)
             if show_nulls:
                 fields = pb.DESCRIPTOR.fields
+                for field in fields:
+                    set_row(_row,
+                            field,
+                            d.get(field.name),
+                            getattr(pb, field.name),
+                            t,
+                            prefix,
+                            fields_to_omit,
+                            number)
             else:
-                fields = pb._fields
-            for field in fields:
-                fname = prefix + field.name
-                if fname in fields_to_omit:
-                    continue
-                value = getattr(pb, field.name)
-                if isinstance(value, Message):
-                    add(_row, value, fname + '.',
-                        100 * (number + field.number))
-                else:
-                    t.add_cell(_row, number + field.number, fname,
-                               d.get(field.name))
-
+                fields = pb.ListFields()
+                for (field, value) in fields:
+                    set_row(_row,
+                            field,
+                            d.get(field.name),
+                            value,
+                            t,
+                            prefix,
+                            fields_to_omit,
+                            number)
         add(row, obj)
 
     t.print_table(header, printfn, dividers)
@@ -124,37 +142,52 @@
                       show_nulls=False):
     from cli.utils import pb2dict
 
+    def set_cell(pb, field, value, t, prefix, fields_to_omit):
+        fname = prefix + field.name
+        if fname in fields_to_omit:
+            return
+        if isinstance(value, Message):
+            pr(value, fname + '.')
+        elif isinstance(value, RepeatedCompositeFieldContainer):
+            row = t.number_of_rows()
+            t.add_cell(row, 0, 'field', fname)
+            t.add_cell(row, 1, 'value', '{} item(s)'.format((field.name)))
+        else:
+            row = t.number_of_rows()
+            t.add_cell(row, 0, 'field', fname)
+            t.add_cell(row, 1, 'value', field.name)
+
     t = TablePrinter()
 
     def pr(_pb, prefix=''):
         d = pb2dict(_pb)
         if show_nulls:
             fields = _pb.DESCRIPTOR.fields
+            for field in sorted(fields, key=lambda f: f.number):
+                set_cell(_pb,
+                        field,
+                        getattr(_pb, field.name),
+                        t,
+                        prefix,
+                        fields_to_omit)
         else:
-            fields = _pb._fields
-        for field in sorted(fields, key=lambda f: f.number):
-            fname = prefix + field.name
-            if fname in fields_to_omit:
-                continue
-            value = getattr(_pb, field.name)
-            if isinstance(value, Message):
-                pr(value, fname + '.')
-            elif isinstance(value, RepeatedCompositeFieldContainer):
-                row = t.number_of_rows()
-                t.add_cell(row, 0, 'field', fname)
-                t.add_cell(row, 1, 'value', '{} item(s)'.format(
-                    len(d.get(field.name))))
-            else:
-                row = t.number_of_rows()
-                t.add_cell(row, 0, 'field', fname)
-                t.add_cell(row, 1, 'value', d.get(field.name))
+            fields = _pb.ListFields()
+            for (field, value) in sorted(fields, key=lambda (f, v): f.number):
+                set_cell(_pb,
+                        field,
+                        value,
+                        t,
+                        prefix,
+                        fields_to_omit)
 
     pr(pb)
 
     t.print_table(header, printfn)
 
+
 if __name__ == '__main__':
     import random
+
     t = TablePrinter()
     for row in range(10):
         t.add_cell(row, 0, 'id', row + 100)