[VOL-2537] Logging - Implement dynamic log levels in voltha-core

Change-Id: If8e1bee7629d58119b3e08b53a24719020495e28
diff --git a/common/core/northbound/grpc/default_api_handler.go b/common/core/northbound/grpc/default_api_handler.go
index f74a1f6..e1aa1f9 100644
--- a/common/core/northbound/grpc/default_api_handler.go
+++ b/common/core/northbound/grpc/default_api_handler.go
@@ -44,12 +44,6 @@
 	return handler
 }
 
-// UpdateLogLevel updates log level
-func (handler *DefaultAPIHandler) UpdateLogLevel(ctx context.Context, logging *voltha.Logging) (*empty.Empty, error) {
-	log.Debugw("UpdateLogLevel-request", log.Fields{"newloglevel": logging.Level, "intval": int(logging.Level)})
-	return nil, errors.New("UnImplemented")
-}
-
 // GetMembership returns membership
 func (handler *DefaultAPIHandler) GetMembership(ctx context.Context, empty *empty.Empty) (*voltha.Membership, error) {
 	log.Debug("GetMembership-request")
diff --git a/go.mod b/go.mod
index 3612c0a..9f3a469 100644
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,7 @@
 	github.com/golang/protobuf v1.3.2
 	github.com/google/uuid v1.1.1
 	github.com/opencord/voltha-lib-go/v3 v3.0.15
-	github.com/opencord/voltha-protos/v3 v3.2.3
+	github.com/opencord/voltha-protos/v3 v3.2.6
 	github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
 	github.com/stretchr/testify v1.4.0
 	google.golang.org/grpc v1.24.0
diff --git a/go.sum b/go.sum
index d8fa50f..67ecde6 100644
--- a/go.sum
+++ b/go.sum
@@ -194,6 +194,8 @@
 github.com/opencord/voltha-lib-go/v3 v3.0.15/go.mod h1:69Y+rVd25Nq2SUeoY7Q1BXtwrcUPllG0erhq+aK8Qec=
 github.com/opencord/voltha-protos/v3 v3.2.3 h1:Wv73mw1Ye0bCfyhOk5svgrlE2tLizHq6tQluoDq9Vg8=
 github.com/opencord/voltha-protos/v3 v3.2.3/go.mod h1:RIGHt7b80BHpHh3ceodknh0DxUjUHCWSbYbZqRx7Og0=
+github.com/opencord/voltha-protos/v3 v3.2.6 h1:Wf7PJ1Ekv9WYcbKBa9bgLNig1Y9krmy3zr6QRCug1LU=
+github.com/opencord/voltha-protos/v3 v3.2.6/go.mod h1:nl1ETp5Iw3avxOaKD8BJlYY5wYI4KeV95aT1pL63nto=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
 github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
diff --git a/rw_core/core/grpc_nbi_api_handler.go b/rw_core/core/grpc_nbi_api_handler.go
index 27ebb58..eaf8fac 100755
--- a/rw_core/core/grpc_nbi_api_handler.go
+++ b/rw_core/core/grpc_nbi_api_handler.go
@@ -186,49 +186,6 @@
 	}
 }
 
-// UpdateLogLevel dynamically sets the log level of a given package to level
-func (handler *APIHandler) UpdateLogLevel(ctx context.Context, logging *voltha.Logging) (*empty.Empty, error) {
-	log.Debugw("UpdateLogLevel-request", log.Fields{"package": logging.PackageName, "intval": int(logging.Level)})
-
-	if logging.PackageName == "" {
-		log.SetAllLogLevel(log.LogLevel(logging.Level))
-		log.SetDefaultLogLevel(log.LogLevel(logging.Level))
-	} else if logging.PackageName == "default" {
-		log.SetDefaultLogLevel(log.LogLevel(logging.Level))
-	} else {
-		log.SetPackageLogLevel(logging.PackageName, log.LogLevel(logging.Level))
-	}
-
-	return &empty.Empty{}, nil
-}
-
-// GetLogLevels returns log levels of packages
-func (APIHandler) GetLogLevels(ctx context.Context, in *voltha.LoggingComponent) (*voltha.Loggings, error) {
-	logLevels := &voltha.Loggings{}
-
-	// do the per-package log levels
-	for _, packageName := range log.GetPackageNames() {
-		level, err := log.GetPackageLogLevel(packageName)
-		if err != nil {
-			return &voltha.Loggings{}, err
-		}
-		logLevel := &voltha.Logging{
-			ComponentName: in.ComponentName,
-			PackageName:   packageName,
-			Level:         voltha.LogLevel_Types(level)}
-		logLevels.Items = append(logLevels.Items, logLevel)
-	}
-
-	// now do the default log level
-	logLevel := &voltha.Logging{
-		ComponentName: in.ComponentName,
-		PackageName:   "default",
-		Level:         voltha.LogLevel_Types(log.GetDefaultLogLevel())}
-	logLevels.Items = append(logLevels.Items, logLevel)
-
-	return logLevels, nil
-}
-
 // ListCoreInstances returns details on the running core containers
 func (handler *APIHandler) ListCoreInstances(ctx context.Context, empty *empty.Empty) (*voltha.CoreInstances, error) {
 	log.Debug("ListCoreInstances")
diff --git a/rw_core/main.go b/rw_core/main.go
index e8a7ea6..3068c98 100644
--- a/rw_core/main.go
+++ b/rw_core/main.go
@@ -29,6 +29,7 @@
 	"github.com/opencord/voltha-go/rw_core/config"
 	c "github.com/opencord/voltha-go/rw_core/core"
 	"github.com/opencord/voltha-go/rw_core/utils"
+	conf "github.com/opencord/voltha-lib-go/v3/pkg/config"
 	"github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
 	"github.com/opencord/voltha-lib-go/v3/pkg/kafka"
 	"github.com/opencord/voltha-lib-go/v3/pkg/log"
@@ -113,6 +114,8 @@
 		rw.config.KVStoreTimeout); err != nil {
 		log.Fatal(err)
 	}
+	cm := conf.NewConfigManager(rw.kvClient, rw.config.KVStoreType, rw.config.KVStoreHost, rw.config.KVStorePort, rw.config.KVStoreTimeout)
+	go conf.ProcessLogConfigChange(cm, ctx)
 
 	// Setup KV transaction context
 	if err := c.SetTransactionContext(instanceID,
diff --git a/tests/utils/test_utils.go b/tests/utils/test_utils.go
index ffc6faa..655e942 100644
--- a/tests/utils/test_utils.go
+++ b/tests/utils/test_utils.go
@@ -196,22 +196,6 @@
 	}
 }
 
-// SetLogLevel sets log level to the given level
-func SetLogLevel(stub voltha.VolthaServiceClient, l voltha.Logging) error {
-	ui := uuid.New()
-	ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(VolthaSerialNumberKey, ui.String()))
-	_, err := stub.UpdateLogLevel(ctx, &l)
-	return err
-}
-
-// SetAllLogLevel sets log level of all service to the given level
-func SetAllLogLevel(stub voltha.VolthaServiceClient, l voltha.Logging) error {
-	ui := uuid.New()
-	ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(VolthaSerialNumberKey, ui.String()))
-	_, err := stub.UpdateLogLevel(ctx, &l)
-	return err
-}
-
 // SetupGrpcConnectionToCore sets up client connection to an RPC server.
 func SetupGrpcConnectionToCore(grpcHostIP string, grpcPort int) (voltha.VolthaServiceClient, error) {
 	grpcHost := fmt.Sprintf("%s:%d", grpcHostIP, grpcPort)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
new file mode 100644
index 0000000..8f96b22
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package config
+
+import (
+	"context"
+	"fmt"
+	"github.com/opencord/voltha-lib-go/v3/pkg/db"
+	"github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
+	"strings"
+)
+
+const (
+	defaultkvStoreConfigPath = "config"
+	kvStoreDataPathPrefix    = "/service/voltha"
+	kvStorePathSeparator     = "/"
+)
+
+// ConfigType represents the type for which config is created inside the kvstore
+// For example, loglevel
+type ConfigType int
+
+const (
+	ConfigTypeLogLevel ConfigType = iota
+	ConfigTypeKafka
+)
+
+func (c ConfigType) String() string {
+	return [...]string{"loglevel", "kafka"}[c]
+}
+
+// ChangeEvent represents the event recieved from watch
+// For example, Put Event
+type ChangeEvent int
+
+const (
+	Put ChangeEvent = iota
+	Delete
+)
+
+// ConfigChangeEvent represents config for the events recieved from watch
+// For example,ChangeType is Put ,ConfigAttribute default
+type ConfigChangeEvent struct {
+	ChangeType      ChangeEvent
+	ConfigAttribute string
+}
+
+// ConfigManager is a wrapper over backend to maintain Configuration of voltha components
+// in kvstore based persistent storage
+type ConfigManager struct {
+	backend             *db.Backend
+	KvStoreConfigPrefix string
+}
+
+// ComponentConfig represents a category of configuration for a specific VOLTHA component type
+// stored in a persistent storage pointed to by Config Manager
+// For example, one ComponentConfig instance will be created for loglevel config type for rw-core
+// component while another ComponentConfig instance will refer to connection config type for same
+// rw-core component. So, there can be multiple ComponentConfig instance created per component
+// pointing to different category of configuration.
+//
+// Configuration pointed to be by ComponentConfig is stored in kvstore as a list of key/value pairs
+// under the hierarchical tree with following base path
+// <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/
+//
+// For example, rw-core ComponentConfig for loglevel config entries will be stored under following path
+// /voltha/service/config/rw-core/loglevel/
+type ComponentConfig struct {
+	cManager         *ConfigManager
+	componentLabel   string
+	configType       ConfigType
+	changeEventChan  chan *ConfigChangeEvent
+	kvStoreEventChan chan *kvstore.Event
+}
+
+func NewConfigManager(kvClient kvstore.Client, kvStoreType, kvStoreHost string, kvStorePort, kvStoreTimeout int) *ConfigManager {
+
+	return &ConfigManager{
+		KvStoreConfigPrefix: defaultkvStoreConfigPath,
+		backend: &db.Backend{
+			Client:     kvClient,
+			StoreType:  kvStoreType,
+			Host:       kvStoreHost,
+			Port:       kvStorePort,
+			Timeout:    kvStoreTimeout,
+			PathPrefix: kvStoreDataPathPrefix,
+		},
+	}
+}
+
+// Initialize the component config
+func (cm *ConfigManager) InitComponentConfig(componentLabel string, configType ConfigType) *ComponentConfig {
+
+	return &ComponentConfig{
+		componentLabel:   componentLabel,
+		configType:       configType,
+		cManager:         cm,
+		changeEventChan:  nil,
+		kvStoreEventChan: nil,
+	}
+
+}
+
+func (c *ComponentConfig) makeConfigPath() string {
+
+	cType := c.configType.String()
+	return c.cManager.KvStoreConfigPrefix + kvStorePathSeparator +
+		c.componentLabel + kvStorePathSeparator + cType
+}
+
+// MonitorForConfigChange watch on the subkeys for the given key
+// Any changes to the subkeys for the given key will return an event channel
+// Then Event channel will be processed and  new event channel with required values will be created and return
+// For example, rw-core will be watching on <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/
+// will return an event channel for PUT,DELETE eventType.
+// Then values from event channel will be processed and  stored in kvStoreEventChan.
+func (c *ComponentConfig) MonitorForConfigChange(ctx context.Context) chan *ConfigChangeEvent {
+	key := c.makeConfigPath()
+
+	log.Debugw("monitoring-for-config-change", log.Fields{"key": key})
+
+	c.changeEventChan = make(chan *ConfigChangeEvent, 1)
+
+	c.kvStoreEventChan = c.cManager.backend.CreateWatch(ctx, key, true)
+
+	go c.processKVStoreWatchEvents()
+
+	return c.changeEventChan
+}
+
+// processKVStoreWatchEvents process event channel recieved from the backend for any ChangeType
+// It checks for the EventType is valid or not.For the valid EventTypes creates ConfigChangeEvent and send it on channel
+func (c *ComponentConfig) processKVStoreWatchEvents() {
+
+	ccKeyPrefix := c.makeConfigPath()
+	log.Debugw("processing-kvstore-event-change", log.Fields{"key-prefix": ccKeyPrefix})
+	ccPathPrefix := c.cManager.backend.PathPrefix + ccKeyPrefix + kvStorePathSeparator
+	for watchResp := range c.kvStoreEventChan {
+
+		if watchResp.EventType == kvstore.CONNECTIONDOWN || watchResp.EventType == kvstore.UNKNOWN {
+			log.Warnw("received-invalid-change-type-in-watch-channel-from-kvstore", log.Fields{"change-type": watchResp.EventType})
+			continue
+		}
+
+		// populating the configAttribute from the received Key
+		// For Example, Key received would be <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/default
+		// Storing default in configAttribute variable
+		ky := fmt.Sprintf("%s", watchResp.Key)
+
+		c.changeEventChan <- &ConfigChangeEvent{
+			ChangeType:      ChangeEvent(watchResp.EventType),
+			ConfigAttribute: strings.TrimPrefix(ky, ccPathPrefix),
+		}
+	}
+}
+
+func (c *ComponentConfig) RetrieveAll(ctx context.Context) (map[string]string, error) {
+	key := c.makeConfigPath()
+
+	log.Debugw("retreiving-list", log.Fields{"key": key})
+	data, err := c.cManager.backend.List(ctx, key)
+	if err != nil {
+		return nil, err
+	}
+
+	// Looping through the data recieved from the backend for the given key
+	// Trimming the required key and value from data and  storing as key/value pair
+	// For Example, recieved key would be <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/default and value \"DEBUG\"
+	// Then in default will be stored as key and DEBUG will be stored as value in map[string]string
+	res := make(map[string]string)
+	ccPathPrefix := c.cManager.backend.PathPrefix + kvStorePathSeparator + key + kvStorePathSeparator
+	for attr, val := range data {
+		res[strings.TrimPrefix(attr, ccPathPrefix)] = strings.Trim(fmt.Sprintf("%s", val.Value), "\"")
+	}
+
+	return res, nil
+}
+
+func (c *ComponentConfig) Save(configKey string, configValue string, ctx context.Context) error {
+	key := c.makeConfigPath() + "/" + configKey
+
+	log.Debugw("saving-key", log.Fields{"key": key, "value": configValue})
+
+	//save the data for update config
+	if err := c.cManager.backend.Put(ctx, key, configValue); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (c *ComponentConfig) Delete(configKey string, ctx context.Context) error {
+	//construct key using makeConfigPath
+	key := c.makeConfigPath() + "/" + configKey
+
+	log.Debugw("deleting-key", log.Fields{"key": key})
+	//delete the config
+	if err := c.cManager.backend.Delete(ctx, key); err != nil {
+		return err
+	}
+	return nil
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
new file mode 100644
index 0000000..b45c2c8
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Package Config provides dynamic logging configuration for specific Voltha component type implemented using backend.The package can be used in following manner
+// Any Voltha component type can start dynamic logging by starting goroutine of ProcessLogConfigChange after starting kvClient for the component.
+
+package config
+
+import (
+	"context"
+	"crypto/md5"
+	"encoding/json"
+	"errors"
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
+	"os"
+	"strings"
+)
+
+// ComponentLogController represents a Configuration for Logging Config of specific Voltha component type
+// It stores ComponentConfig and GlobalConfig of loglevel config of specific Voltha component type
+// For example,ComponentLogController instance will be created for rw-core component
+type ComponentLogController struct {
+	ComponentName       string
+	componentNameConfig *ComponentConfig
+	GlobalConfig        *ComponentConfig
+	configManager       *ConfigManager
+	logHash             [16]byte
+}
+
+func NewComponentLogController(cm *ConfigManager) (*ComponentLogController, error) {
+
+	log.Debug("creating-new-component-log-controller")
+	componentName := os.Getenv("COMPONENT_NAME")
+	if componentName == "" {
+		return nil, errors.New("Unable to retrieve PoD Component Name from Runtime env")
+	}
+
+	return &ComponentLogController{
+		ComponentName:       componentName,
+		componentNameConfig: nil,
+		GlobalConfig:        nil,
+		configManager:       cm,
+	}, nil
+
+}
+
+// ProcessLogConfigChange initialize component config and global config
+func ProcessLogConfigChange(cm *ConfigManager, ctx context.Context) {
+	cc, err := NewComponentLogController(cm)
+	if err != nil {
+		log.Errorw("unable-to-construct-component-log-controller-instance-for-log-config-monitoring", log.Fields{"error": err})
+		return
+	}
+
+	log.Debugw("processing-log-config-change", log.Fields{"cc": cc})
+
+	cc.GlobalConfig = cm.InitComponentConfig("global", ConfigTypeLogLevel)
+	log.Debugw("global-log-config", log.Fields{"cc-global-config": cc.GlobalConfig})
+
+	cc.componentNameConfig = cm.InitComponentConfig(cc.ComponentName, ConfigTypeLogLevel)
+	log.Debugw("component-log-config", log.Fields{"cc-component-name-config": cc.componentNameConfig})
+
+	cc.processLogConfig(ctx)
+}
+
+// ProcessLogConfig wait on componentn config and global config channel for any changes
+// Event channel will be recieved from backend for valid change type
+// Then data for componentn log config and global log config will be retrieved from backend and stored in updatedLogConfig in precedence order
+// If any changes in updatedLogConfig will be applied on component
+func (c *ComponentLogController) processLogConfig(ctx context.Context) {
+
+	componentConfigEventChan := c.componentNameConfig.MonitorForConfigChange(ctx)
+
+	globalConfigEventChan := c.GlobalConfig.MonitorForConfigChange(ctx)
+
+	// process the events for componentName and  global config
+	var configEvent *ConfigChangeEvent
+	for {
+		select {
+		case configEvent = <-globalConfigEventChan:
+		case configEvent = <-componentConfigEventChan:
+
+		}
+		log.Debugw("processing-log-config-change", log.Fields{"config-event": configEvent})
+
+		updatedLogConfig, err := c.buildUpdatedLogConfig(ctx)
+		if err != nil {
+			log.Warnw("unable-to-fetch-updated-log-config", log.Fields{"error": err})
+			continue
+		}
+
+		log.Debugw("applying-updated-log-config", log.Fields{"updated-log-config": updatedLogConfig})
+
+		if err := c.loadAndApplyLogConfig(updatedLogConfig); err != nil {
+			log.Warnw("unable-to-load-and-apply-log-config", log.Fields{"error": err})
+		}
+	}
+
+}
+
+// get active loglevel from the zap logger
+func getActiveLogLevel() map[string]string {
+	loglevel := make(map[string]string)
+
+	// now do the default log level
+	if level, err := log.LogLevelToString(log.GetDefaultLogLevel()); err == nil {
+		loglevel["default"] = level
+	}
+
+	// do the per-package log levels
+	for _, packageName := range log.GetPackageNames() {
+		level, err := log.GetPackageLogLevel(packageName)
+		if err != nil {
+			log.Warnw("unable-to-fetch-current-active-loglevel-for-package-name", log.Fields{"package-name": packageName, "error": err})
+		}
+
+		packagename := strings.ReplaceAll(packageName, "/", "#")
+		if l, err := log.LogLevelToString(level); err == nil {
+			loglevel[packagename] = l
+		}
+
+	}
+	log.Debugw("getting-log-levels-from-zap-logger", log.Fields{"log-level": loglevel})
+
+	return loglevel
+}
+
+func (c *ComponentLogController) getGlobalLogConfig(ctx context.Context) (string, error) {
+
+	globalDefaultLogLevel := ""
+	globalLogConfig, err := c.GlobalConfig.RetrieveAll(ctx)
+	if err != nil {
+		return "", err
+	}
+
+	if globalLevel, ok := globalLogConfig["default"]; ok {
+		if _, err := log.StringToLogLevel(globalLevel); err != nil {
+			log.Warnw("unsupported-loglevel-config-defined-at-global-context-pacakge-name", log.Fields{"log-level": globalLevel})
+		} else {
+			globalDefaultLogLevel = globalLevel
+		}
+	}
+	log.Debugw("retrieved-global-log-config", log.Fields{"global-log-config": globalLogConfig})
+
+	return globalDefaultLogLevel, nil
+}
+
+func (c *ComponentLogController) getComponentLogConfig(globalDefaultLogLevel string, ctx context.Context) (map[string]string, error) {
+	var defaultPresent bool
+	componentLogConfig, err := c.componentNameConfig.RetrieveAll(ctx)
+	if err != nil {
+		return nil, err
+	}
+
+	for componentKey, componentLevel := range componentLogConfig {
+		if _, err := log.StringToLogLevel(componentLevel); err != nil || componentKey == "" {
+			log.Warnw("unsupported-loglevel-config-defined-at-component-context", log.Fields{"package-name": componentKey, "log-level": componentLevel})
+			delete(componentLogConfig, componentKey)
+		} else {
+			if componentKey == "default" {
+				defaultPresent = true
+			}
+		}
+	}
+	if !defaultPresent {
+		if globalDefaultLogLevel != "" {
+			componentLogConfig["default"] = globalDefaultLogLevel
+		}
+	}
+	log.Debugw("retrieved-component-log-config", log.Fields{"component-log-level": componentLogConfig})
+
+	return componentLogConfig, nil
+}
+
+// buildUpdatedLogConfig retrieve the global logConfig and component logConfig  from backend
+// component logConfig stores the log config with precedence order
+// For example, If the global logConfig is set and component logConfig is set only for specific package then
+// component logConfig is stored with global logConfig  and component logConfig of specific package
+// For example, If the global logConfig is set and component logConfig is set for specific package and as well as for default then
+// component logConfig is stored with  component logConfig data only
+func (c *ComponentLogController) buildUpdatedLogConfig(ctx context.Context) (map[string]string, error) {
+	globalLogLevel, err := c.getGlobalLogConfig(ctx)
+	if err != nil {
+		return nil, err
+	}
+
+	componentLogConfig, err := c.getComponentLogConfig(globalLogLevel, ctx)
+	if err != nil {
+		return nil, err
+	}
+
+	log.Debugw("building-and-updating-log-config", log.Fields{"component-log-config": componentLogConfig})
+	return componentLogConfig, nil
+}
+
+// load and apply the current configuration for component name
+// create hash of loaded configuration using GenerateLogConfigHash
+// if there is previous hash stored, compare the hash to stored hash
+// if there is any change will call UpdateLogLevels
+func (c *ComponentLogController) loadAndApplyLogConfig(logConfig map[string]string) error {
+	currentLogHash, err := GenerateLogConfigHash(logConfig)
+	if err != nil {
+		return err
+	}
+
+	log.Debugw("loading-and-applying-log-config", log.Fields{"log-config": logConfig})
+	if c.logHash != currentLogHash {
+		UpdateLogLevels(logConfig)
+		c.logHash = currentLogHash
+	}
+	return nil
+}
+
+// getDefaultLogLevel to return active default log level
+func getDefaultLogLevel(logConfig map[string]string) string {
+
+	for key, level := range logConfig {
+		if key == "default" {
+			return level
+		}
+	}
+	return ""
+}
+
+// createCurrentLogLevel loop through the activeLogLevels recieved from zap logger and updatedLogLevels recieved from buildUpdatedLogConfig
+// The packageName is present or not will be checked in updatedLogLevels ,if the package name is not present then updatedLogLevels will be updated with
+// the packageName and loglevel with  default log level
+func createCurrentLogLevel(activeLogLevels, updatedLogLevels map[string]string) map[string]string {
+	level := getDefaultLogLevel(updatedLogLevels)
+	for activeKey, activeLevel := range activeLogLevels {
+		if _, exist := updatedLogLevels[activeKey]; !exist {
+			if level != "" {
+				activeLevel = level
+			}
+			updatedLogLevels[activeKey] = activeLevel
+		}
+	}
+	return updatedLogLevels
+}
+
+// updateLogLevels update the loglevels for the component
+// retrieve active confguration from logger
+// compare with entries one by one and apply
+func UpdateLogLevels(logLevel map[string]string) {
+
+	activeLogLevels := getActiveLogLevel()
+	currentLogLevel := createCurrentLogLevel(activeLogLevels, logLevel)
+	for key, level := range currentLogLevel {
+		if key == "default" {
+			if l, err := log.StringToLogLevel(level); err == nil {
+				log.SetDefaultLogLevel(l)
+			}
+		} else {
+			pname := strings.ReplaceAll(key, "#", "/")
+			if _, err := log.AddPackage(log.JSON, log.DebugLevel, nil, pname); err != nil {
+				log.Warnw("unable-to-add-log-package", log.Fields{"package-name": pname, "error": err})
+			}
+			if l, err := log.StringToLogLevel(level); err == nil {
+				log.SetPackageLogLevel(pname, l)
+			}
+		}
+	}
+	log.Debugw("updated-log-level", log.Fields{"current-log-level": currentLogLevel})
+}
+
+// generate md5 hash of key value pairs appended into a single string
+// in order by key name
+func GenerateLogConfigHash(createHashLog map[string]string) ([16]byte, error) {
+	createHashLogBytes := []byte{}
+	levelData, err := json.Marshal(createHashLog)
+	if err != nil {
+		return [16]byte{}, err
+	}
+	createHashLogBytes = append(createHashLogBytes, levelData...)
+	return md5.Sum(createHashLogBytes), nil
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
index 96d2f34..c4b9028 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
@@ -42,44 +42,6 @@
 	return fileDescriptor_c2e3fd231961e826, []int{0}
 }
 
-// Logging verbosity level
-type LogLevel_Types int32
-
-const (
-	LogLevel_DEBUG    LogLevel_Types = 0
-	LogLevel_INFO     LogLevel_Types = 1
-	LogLevel_WARNING  LogLevel_Types = 2
-	LogLevel_ERROR    LogLevel_Types = 3
-	LogLevel_CRITICAL LogLevel_Types = 4
-	LogLevel_FATAL    LogLevel_Types = 5
-)
-
-var LogLevel_Types_name = map[int32]string{
-	0: "DEBUG",
-	1: "INFO",
-	2: "WARNING",
-	3: "ERROR",
-	4: "CRITICAL",
-	5: "FATAL",
-}
-
-var LogLevel_Types_value = map[string]int32{
-	"DEBUG":    0,
-	"INFO":     1,
-	"WARNING":  2,
-	"ERROR":    3,
-	"CRITICAL": 4,
-	"FATAL":    5,
-}
-
-func (x LogLevel_Types) String() string {
-	return proto.EnumName(LogLevel_Types_name, int32(x))
-}
-
-func (LogLevel_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
-}
-
 // Administrative State
 type AdminState_Types int32
 
@@ -122,7 +84,7 @@
 }
 
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
 }
 
 // Operational Status
@@ -166,7 +128,7 @@
 }
 
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
 }
 
 // Connectivity Status
@@ -198,7 +160,7 @@
 }
 
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -226,7 +188,7 @@
 }
 
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{9, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 // Convey a resource identifier
@@ -309,172 +271,6 @@
 	return nil
 }
 
-type LogLevel struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LogLevel) Reset()         { *m = LogLevel{} }
-func (m *LogLevel) String() string { return proto.CompactTextString(m) }
-func (*LogLevel) ProtoMessage()    {}
-func (*LogLevel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
-}
-
-func (m *LogLevel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogLevel.Unmarshal(m, b)
-}
-func (m *LogLevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogLevel.Marshal(b, m, deterministic)
-}
-func (m *LogLevel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogLevel.Merge(m, src)
-}
-func (m *LogLevel) XXX_Size() int {
-	return xxx_messageInfo_LogLevel.Size(m)
-}
-func (m *LogLevel) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogLevel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogLevel proto.InternalMessageInfo
-
-type Logging struct {
-	Level                LogLevel_Types `protobuf:"varint,1,opt,name=level,proto3,enum=common.LogLevel_Types" json:"level,omitempty"`
-	PackageName          string         `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
-	ComponentName        string         `protobuf:"bytes,3,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *Logging) Reset()         { *m = Logging{} }
-func (m *Logging) String() string { return proto.CompactTextString(m) }
-func (*Logging) ProtoMessage()    {}
-func (*Logging) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
-}
-
-func (m *Logging) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Logging.Unmarshal(m, b)
-}
-func (m *Logging) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Logging.Marshal(b, m, deterministic)
-}
-func (m *Logging) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Logging.Merge(m, src)
-}
-func (m *Logging) XXX_Size() int {
-	return xxx_messageInfo_Logging.Size(m)
-}
-func (m *Logging) XXX_DiscardUnknown() {
-	xxx_messageInfo_Logging.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Logging proto.InternalMessageInfo
-
-func (m *Logging) GetLevel() LogLevel_Types {
-	if m != nil {
-		return m.Level
-	}
-	return LogLevel_DEBUG
-}
-
-func (m *Logging) GetPackageName() string {
-	if m != nil {
-		return m.PackageName
-	}
-	return ""
-}
-
-func (m *Logging) GetComponentName() string {
-	if m != nil {
-		return m.ComponentName
-	}
-	return ""
-}
-
-// For GetLogLevels(), select component to query
-type LoggingComponent struct {
-	ComponentName        string   `protobuf:"bytes,1,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LoggingComponent) Reset()         { *m = LoggingComponent{} }
-func (m *LoggingComponent) String() string { return proto.CompactTextString(m) }
-func (*LoggingComponent) ProtoMessage()    {}
-func (*LoggingComponent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
-}
-
-func (m *LoggingComponent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoggingComponent.Unmarshal(m, b)
-}
-func (m *LoggingComponent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoggingComponent.Marshal(b, m, deterministic)
-}
-func (m *LoggingComponent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoggingComponent.Merge(m, src)
-}
-func (m *LoggingComponent) XXX_Size() int {
-	return xxx_messageInfo_LoggingComponent.Size(m)
-}
-func (m *LoggingComponent) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoggingComponent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoggingComponent proto.InternalMessageInfo
-
-func (m *LoggingComponent) GetComponentName() string {
-	if m != nil {
-		return m.ComponentName
-	}
-	return ""
-}
-
-// For returning multiple log levels
-type Loggings struct {
-	Items                []*Logging `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *Loggings) Reset()         { *m = Loggings{} }
-func (m *Loggings) String() string { return proto.CompactTextString(m) }
-func (*Loggings) ProtoMessage()    {}
-func (*Loggings) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
-}
-
-func (m *Loggings) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Loggings.Unmarshal(m, b)
-}
-func (m *Loggings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Loggings.Marshal(b, m, deterministic)
-}
-func (m *Loggings) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Loggings.Merge(m, src)
-}
-func (m *Loggings) XXX_Size() int {
-	return xxx_messageInfo_Loggings.Size(m)
-}
-func (m *Loggings) XXX_DiscardUnknown() {
-	xxx_messageInfo_Loggings.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Loggings proto.InternalMessageInfo
-
-func (m *Loggings) GetItems() []*Logging {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
 type AdminState struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -485,7 +281,7 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return fileDescriptor_c2e3fd231961e826, []int{2}
 }
 
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
@@ -516,7 +312,7 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
 
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
@@ -547,7 +343,7 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
 
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
@@ -582,7 +378,7 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{9}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
 
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
@@ -619,17 +415,12 @@
 
 func init() {
 	proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
-	proto.RegisterEnum("common.LogLevel_Types", LogLevel_Types_name, LogLevel_Types_value)
 	proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
 	proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
 	proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
 	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
 	proto.RegisterType((*ID)(nil), "common.ID")
 	proto.RegisterType((*IDs)(nil), "common.IDs")
-	proto.RegisterType((*LogLevel)(nil), "common.LogLevel")
-	proto.RegisterType((*Logging)(nil), "common.Logging")
-	proto.RegisterType((*LoggingComponent)(nil), "common.LoggingComponent")
-	proto.RegisterType((*Loggings)(nil), "common.Loggings")
 	proto.RegisterType((*AdminState)(nil), "common.AdminState")
 	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
 	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
@@ -639,45 +430,35 @@
 func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
 var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 640 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x4a,
-	0x10, 0x8d, 0x9d, 0x2f, 0x98, 0x90, 0xb0, 0x77, 0xb9, 0x5c, 0x71, 0xab, 0x3e, 0x50, 0x4b, 0x08,
-	0x5a, 0xb5, 0x89, 0x0a, 0x7d, 0xe9, 0x43, 0x1f, 0x8c, 0xbd, 0xa4, 0x2b, 0xcc, 0x3a, 0x5a, 0x3b,
-	0xa0, 0xf6, 0xa1, 0x91, 0x89, 0x17, 0x63, 0x35, 0xf1, 0x5a, 0xb1, 0x83, 0xc4, 0x63, 0x7f, 0x65,
-	0xff, 0x4e, 0xb5, 0xfe, 0x28, 0x20, 0xe5, 0x71, 0xce, 0x9c, 0xd9, 0x33, 0x73, 0x66, 0x07, 0x5e,
-	0x3d, 0xc8, 0x45, 0x7e, 0x1f, 0xcc, 0xd2, 0x95, 0xcc, 0x65, 0x36, 0x9a, 0xcb, 0xe5, 0x52, 0x26,
-	0xc3, 0x22, 0xc2, 0x9d, 0x32, 0x32, 0xfe, 0x05, 0x9d, 0xda, 0x78, 0x00, 0x7a, 0x1c, 0x1e, 0x68,
-	0x87, 0xda, 0xc9, 0x36, 0xd7, 0xe3, 0xd0, 0x38, 0x86, 0x26, 0xb5, 0x33, 0x7c, 0x08, 0xed, 0x38,
-	0x17, 0xcb, 0xec, 0x40, 0x3b, 0x6c, 0x9e, 0xf4, 0x4e, 0x61, 0x58, 0x3d, 0x41, 0x6d, 0x5e, 0x26,
-	0x8c, 0x6f, 0xb0, 0xe5, 0xc8, 0xc8, 0x11, 0x0f, 0x62, 0x61, 0x5c, 0x41, 0xdb, 0x7f, 0x4c, 0x45,
-	0x86, 0xb7, 0xa1, 0x6d, 0x93, 0xf3, 0xe9, 0x18, 0x35, 0xf0, 0x16, 0xb4, 0x28, 0xbb, 0x70, 0x91,
-	0x86, 0x7b, 0xd0, 0xbd, 0x31, 0x39, 0xa3, 0x6c, 0x8c, 0x74, 0xc5, 0x20, 0x9c, 0xbb, 0x1c, 0x35,
-	0xf1, 0x0e, 0x6c, 0x59, 0x9c, 0xfa, 0xd4, 0x32, 0x1d, 0xd4, 0x52, 0x89, 0x0b, 0xd3, 0x37, 0x1d,
-	0xd4, 0x36, 0x7e, 0x69, 0xd0, 0x75, 0x64, 0x14, 0xc5, 0x49, 0x84, 0xdf, 0x43, 0x7b, 0xa1, 0x34,
-	0x8a, 0x16, 0x07, 0xa7, 0xff, 0xd5, 0x8d, 0xd4, 0xda, 0xc3, 0x42, 0x98, 0x97, 0x24, 0xfc, 0x06,
-	0x76, 0xd2, 0x60, 0xfe, 0x33, 0x88, 0xc4, 0x2c, 0x09, 0x96, 0xe2, 0x40, 0x2f, 0xe6, 0xea, 0x55,
-	0x18, 0x0b, 0x96, 0x02, 0x1f, 0xc1, 0x60, 0x2e, 0x97, 0xa9, 0x4c, 0x44, 0x92, 0x97, 0xa4, 0x66,
-	0x41, 0xea, 0xff, 0x45, 0x15, 0xcd, 0xf8, 0x0c, 0xa8, 0x6a, 0xc1, 0xaa, 0xf1, 0x0d, 0xa5, 0xda,
-	0xa6, 0xd2, 0x8f, 0x85, 0x33, 0xaa, 0x34, 0xc3, 0x47, 0x2f, 0x7d, 0xdc, 0x7d, 0xd6, 0xbe, 0x22,
-	0xd4, 0x66, 0xae, 0x01, 0xcc, 0x70, 0x19, 0x27, 0x5e, 0x1e, 0xe4, 0xc2, 0x88, 0x6a, 0x3b, 0x7b,
-	0xd0, 0x9d, 0xb2, 0x4b, 0xe6, 0xde, 0x30, 0xd4, 0xc0, 0x18, 0x06, 0x13, 0x4e, 0x26, 0xdc, 0xbd,
-	0xa6, 0x1e, 0x75, 0x19, 0xb1, 0x4b, 0x6b, 0x09, 0x33, 0xcf, 0x1d, 0x62, 0x23, 0x5d, 0xf9, 0x69,
-	0x53, 0xaf, 0x8c, 0x9a, 0x78, 0x1f, 0xfe, 0xb1, 0xdd, 0x1b, 0xe6, 0xb8, 0xa6, 0x4d, 0xd9, 0x78,
-	0x46, 0xaf, 0xcc, 0x31, 0x41, 0x2d, 0x55, 0x61, 0x13, 0x87, 0xf8, 0xc4, 0x46, 0x6d, 0x23, 0x02,
-	0x70, 0x53, 0xb1, 0x52, 0xaa, 0x6b, 0xb5, 0xd1, 0x4d, 0xb2, 0x03, 0x00, 0x9b, 0x7a, 0x96, 0x7b,
-	0x4d, 0x78, 0x21, 0x39, 0x00, 0x30, 0x2d, 0x9f, 0x5e, 0x9b, 0x7e, 0xb9, 0xd0, 0x1e, 0x74, 0x7d,
-	0xe2, 0x15, 0x41, 0x13, 0x03, 0x74, 0x8a, 0xa4, 0x52, 0x02, 0xe8, 0x5c, 0x98, 0xd4, 0x29, 0x84,
-	0x08, 0xf4, 0x2d, 0x99, 0x24, 0x62, 0x9e, 0x57, 0x5a, 0x9f, 0x36, 0x6a, 0xed, 0x42, 0x6f, 0xca,
-	0x38, 0x31, 0xad, 0xaf, 0x6a, 0x0a, 0xa4, 0xe1, 0x3e, 0x6c, 0x3f, 0x85, 0xba, 0xf1, 0x5b, 0x83,
-	0xbe, 0x6a, 0x38, 0xc8, 0x63, 0x99, 0x70, 0x91, 0xa5, 0xf8, 0x0b, 0xb4, 0xe6, 0x32, 0x14, 0xd5,
-	0xef, 0x78, 0x5b, 0xdb, 0xfb, 0x82, 0xf4, 0x3c, 0xca, 0xd7, 0xab, 0xc4, 0x92, 0xa1, 0xe0, 0x45,
-	0x19, 0x3e, 0x86, 0xdd, 0x20, 0x0c, 0x63, 0x95, 0x0b, 0x16, 0xb3, 0x38, 0xb9, 0x93, 0xd5, 0x97,
-	0x19, 0x3c, 0xc1, 0x34, 0xb9, 0x93, 0xc6, 0x0f, 0xd8, 0xdb, 0xf0, 0x8a, 0x32, 0xd9, 0x9d, 0x10,
-	0x6e, 0xfa, 0xd4, 0x65, 0x33, 0x6f, 0x6a, 0x59, 0xc4, 0xf3, 0x50, 0xe3, 0x25, 0xac, 0x4c, 0x98,
-	0x72, 0x35, 0xcd, 0xff, 0xb0, 0xff, 0x04, 0x4f, 0x99, 0x37, 0x9d, 0x4c, 0x5c, 0xae, 0x36, 0xa1,
-	0xbf, 0x7b, 0x0d, 0x3b, 0xbe, 0xc8, 0xf2, 0x2b, 0x19, 0x8a, 0x4b, 0xf1, 0x98, 0xa9, 0x5d, 0x06,
-	0x69, 0x3c, 0xcb, 0x45, 0x96, 0xa3, 0xc6, 0x39, 0x81, 0x3d, 0xb9, 0x8a, 0x86, 0x32, 0x15, 0xc9,
-	0x5c, 0xae, 0xc2, 0x61, 0x79, 0xdd, 0xdf, 0x87, 0x51, 0x9c, 0xdf, 0xaf, 0x6f, 0xd5, 0xd0, 0xa3,
-	0x3a, 0x37, 0x2a, 0x73, 0x1f, 0xaa, 0xcb, 0x7f, 0x38, 0x1b, 0x45, 0xb2, 0xba, 0xff, 0xdb, 0x4e,
-	0x01, 0x9e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x80, 0xbf, 0xca, 0x42, 0x1e, 0x04, 0x00, 0x00,
+	// 480 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xd1, 0x4e, 0xdb, 0x30,
+	0x14, 0x6d, 0x52, 0xda, 0x8d, 0x5b, 0x1a, 0x32, 0x33, 0xa4, 0x6e, 0xda, 0x43, 0x95, 0x17, 0xd8,
+	0xa4, 0xb5, 0x12, 0xec, 0x75, 0x0f, 0x21, 0xf6, 0x3a, 0x8b, 0x62, 0x57, 0x4e, 0x52, 0xb4, 0x3d,
+	0xac, 0x0a, 0x8d, 0x29, 0x91, 0x68, 0x1c, 0x25, 0x2e, 0x12, 0x5f, 0xba, 0xdf, 0x99, 0x9c, 0x14,
+	0x75, 0x48, 0x7d, 0x3c, 0xe7, 0x5c, 0xdf, 0xe3, 0x7b, 0xee, 0x85, 0x8f, 0x4f, 0xea, 0x51, 0x3f,
+	0x24, 0x8b, 0xa2, 0x54, 0x5a, 0x55, 0xe3, 0xa5, 0x5a, 0xaf, 0x55, 0x3e, 0xaa, 0x11, 0xea, 0x36,
+	0xc8, 0x7b, 0x0f, 0x36, 0xc5, 0xc8, 0x01, 0x3b, 0x4b, 0x07, 0xd6, 0xd0, 0x3a, 0x3f, 0x14, 0x76,
+	0x96, 0x7a, 0x67, 0xd0, 0xa6, 0xb8, 0x42, 0x43, 0xe8, 0x64, 0x5a, 0xae, 0xab, 0x81, 0x35, 0x6c,
+	0x9f, 0xf7, 0x2e, 0x60, 0xb4, 0x6d, 0x41, 0xb1, 0x68, 0x04, 0x6f, 0x03, 0xe0, 0xa7, 0xeb, 0x2c,
+	0x0f, 0x75, 0xa2, 0xa5, 0xb7, 0x82, 0x4e, 0xf4, 0x5c, 0xc8, 0x0a, 0xf5, 0xe0, 0x4d, 0xcc, 0xae,
+	0x19, 0xbf, 0x65, 0x6e, 0x0b, 0x21, 0x70, 0x66, 0x82, 0xcc, 0x04, 0x9f, 0xd3, 0x90, 0x72, 0x46,
+	0xb0, 0x6b, 0x99, 0x02, 0xc2, 0xfc, 0xab, 0x29, 0xc1, 0xae, 0x8d, 0x8e, 0xe0, 0x2d, 0xa6, 0x61,
+	0x83, 0xda, 0xe8, 0x14, 0xde, 0x61, 0x7e, 0xcb, 0xa6, 0xdc, 0xc7, 0x94, 0x4d, 0x16, 0xf4, 0xc6,
+	0x9f, 0x10, 0xf7, 0xc0, 0xbc, 0xc0, 0x64, 0x4a, 0x22, 0x82, 0xdd, 0x8e, 0xb7, 0x02, 0xe0, 0x85,
+	0x2c, 0x8d, 0xeb, 0xa6, 0xf2, 0x7e, 0xed, 0xb5, 0x75, 0x00, 0x30, 0x0d, 0x03, 0x3e, 0x27, 0xa2,
+	0xb6, 0x74, 0x00, 0xfc, 0x20, 0xa2, 0x73, 0x3f, 0xa2, 0x6c, 0xe2, 0xda, 0xa6, 0x38, 0x22, 0x61,
+	0x0d, 0xda, 0x08, 0xa0, 0x5b, 0x8b, 0xc6, 0x09, 0xa0, 0xfb, 0xc3, 0xa7, 0xd3, 0xda, 0x88, 0x40,
+	0x3f, 0x50, 0x79, 0x2e, 0x97, 0x7a, 0xeb, 0xf5, 0x6d, 0xaf, 0xd7, 0x31, 0xf4, 0x62, 0x26, 0x88,
+	0x1f, 0xfc, 0x34, 0x53, 0xb8, 0x16, 0xea, 0xc3, 0xe1, 0x0e, 0xda, 0xde, 0x5f, 0x0b, 0xfa, 0xe6,
+	0xc3, 0x89, 0xce, 0x54, 0x2e, 0x64, 0x55, 0xa0, 0xef, 0x70, 0xb0, 0x54, 0xa9, 0xac, 0x33, 0x77,
+	0x2e, 0x3e, 0xbf, 0x24, 0xfb, 0xaa, 0xe8, 0x7f, 0xa4, 0x37, 0x65, 0x1e, 0xa8, 0x54, 0x8a, 0xfa,
+	0x19, 0x3a, 0x83, 0xe3, 0x24, 0x4d, 0x33, 0xa3, 0x25, 0x8f, 0x8b, 0x2c, 0xbf, 0x57, 0x03, 0xbb,
+	0xde, 0x9e, 0xb3, 0xa3, 0x69, 0x7e, 0xaf, 0xbc, 0x3f, 0x70, 0xb2, 0xa7, 0x8b, 0x09, 0x99, 0xcf,
+	0x88, 0xf0, 0x23, 0xca, 0xd9, 0x22, 0x8c, 0x83, 0x80, 0x84, 0xa1, 0xdb, 0x7a, 0x4d, 0x9b, 0x10,
+	0x62, 0x61, 0xa6, 0xf9, 0x00, 0xa7, 0x3b, 0x3a, 0x66, 0x61, 0x3c, 0x9b, 0x71, 0x61, 0x36, 0x61,
+	0x7f, 0xf9, 0x04, 0x47, 0x91, 0xac, 0xf4, 0x8d, 0x4a, 0xe5, 0xb5, 0x7c, 0xae, 0xcc, 0x2e, 0x93,
+	0x22, 0x5b, 0x68, 0x59, 0x69, 0xb7, 0x75, 0x45, 0xe0, 0x44, 0x95, 0xab, 0x91, 0x2a, 0x64, 0xbe,
+	0x54, 0x65, 0x3a, 0x6a, 0x0e, 0xf2, 0xf7, 0x68, 0x95, 0xe9, 0x87, 0xcd, 0x9d, 0x19, 0x7a, 0xfc,
+	0xa2, 0x8d, 0x1b, 0xed, 0xeb, 0xf6, 0x58, 0x9f, 0x2e, 0xc7, 0x2b, 0xb5, 0x3d, 0xd9, 0xbb, 0x6e,
+	0x4d, 0x5e, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x21, 0x5c, 0x35, 0xd1, 0x02, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
index 880a0a2..a5dea13 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
@@ -30,18 +30,6 @@
 // IDs from public import voltha_protos/common.proto
 type IDs = common.IDs
 
-// LogLevel from public import voltha_protos/common.proto
-type LogLevel = common.LogLevel
-
-// Logging from public import voltha_protos/common.proto
-type Logging = common.Logging
-
-// LoggingComponent from public import voltha_protos/common.proto
-type LoggingComponent = common.LoggingComponent
-
-// Loggings from public import voltha_protos/common.proto
-type Loggings = common.Loggings
-
 // AdminState from public import voltha_protos/common.proto
 type AdminState = common.AdminState
 
@@ -62,19 +50,6 @@
 
 const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
 
-// LogLevel_Types from public import voltha_protos/common.proto
-type LogLevel_Types = common.LogLevel_Types
-
-var LogLevel_Types_name = common.LogLevel_Types_name
-var LogLevel_Types_value = common.LogLevel_Types_value
-
-const LogLevel_DEBUG = LogLevel_Types(common.LogLevel_DEBUG)
-const LogLevel_INFO = LogLevel_Types(common.LogLevel_INFO)
-const LogLevel_WARNING = LogLevel_Types(common.LogLevel_WARNING)
-const LogLevel_ERROR = LogLevel_Types(common.LogLevel_ERROR)
-const LogLevel_CRITICAL = LogLevel_Types(common.LogLevel_CRITICAL)
-const LogLevel_FATAL = LogLevel_Types(common.LogLevel_FATAL)
-
 // AdminState_Types from public import voltha_protos/common.proto
 type AdminState_Types = common.AdminState_Types
 
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
index 1f24221..4cc76e0 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
@@ -8,7 +8,7 @@
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	common "github.com/opencord/voltha-protos/v3/go/common"
+	_ "github.com/opencord/voltha-protos/v3/go/common"
 	math "math"
 )
 
@@ -24,8 +24,6 @@
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type AdapterConfig struct {
-	// Common adapter config attributes here
-	LogLevel common.LogLevel_Types `protobuf:"varint,1,opt,name=log_level,json=logLevel,proto3,enum=common.LogLevel_Types" json:"log_level,omitempty"`
 	// Custom (vendor-specific) configuration attributes
 	AdditionalConfig     *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -58,13 +56,6 @@
 
 var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
 
-func (m *AdapterConfig) GetLogLevel() common.LogLevel_Types {
-	if m != nil {
-		return m.LogLevel
-	}
-	return common.LogLevel_DEBUG
-}
-
 func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
 	if m != nil {
 		return m.AdditionalConfig
@@ -213,33 +204,31 @@
 func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
 
 var fileDescriptor_7e998ce153307274 = []byte{
-	// 439 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xdd, 0x6a, 0xdb, 0x30,
-	0x14, 0xc6, 0xc9, 0x92, 0x36, 0x2a, 0xdd, 0x52, 0x6d, 0x29, 0x5e, 0x46, 0x69, 0x08, 0x0c, 0x72,
-	0xb1, 0xca, 0x2c, 0x79, 0x81, 0x25, 0xed, 0x4d, 0xa1, 0x57, 0x26, 0xec, 0x62, 0x37, 0x46, 0xb1,
-	0x54, 0x55, 0x20, 0xeb, 0x18, 0x4b, 0x31, 0xe4, 0x09, 0xf6, 0x74, 0x7b, 0x83, 0x3d, 0xc0, 0x9e,
-	0x60, 0xd7, 0xc3, 0x92, 0x4c, 0x7e, 0x06, 0xbd, 0x32, 0xe7, 0xfb, 0xbe, 0x73, 0xbe, 0xef, 0x1c,
-	0x0b, 0x7d, 0xaa, 0x41, 0xd9, 0x17, 0x9a, 0x95, 0x15, 0x58, 0x30, 0x09, 0x65, 0xb4, 0xb4, 0xbc,
-	0x22, 0xae, 0xc4, 0x7d, 0x4f, 0x8e, 0x3f, 0x0a, 0x00, 0xa1, 0x78, 0xe2, 0xd0, 0xcd, 0xf6, 0x39,
-	0xa1, 0x7a, 0xe7, 0x25, 0xe3, 0xf1, 0x71, 0x7f, 0x0e, 0x45, 0x01, 0x3a, 0x70, 0xf1, 0x31, 0x57,
-	0x70, 0x4b, 0x03, 0x73, 0x7b, 0x3a, 0xd0, 0xca, 0x82, 0x1b, 0x4b, 0x8b, 0xd2, 0x0b, 0xa6, 0x3f,
-	0x23, 0x74, 0xb9, 0xf4, 0x59, 0xee, 0x41, 0x3f, 0x4b, 0x81, 0x17, 0x68, 0xa0, 0x40, 0x64, 0x8a,
-	0xd7, 0x5c, 0xc5, 0xd1, 0x24, 0x9a, 0xbd, 0x9d, 0x5f, 0x93, 0x60, 0xf7, 0x04, 0xe2, 0xa9, 0xc1,
-	0xc9, 0x7a, 0x57, 0x72, 0x93, 0x9e, 0xab, 0x50, 0xe3, 0x25, 0xba, 0xa2, 0x8c, 0x49, 0x2b, 0x41,
-	0x53, 0x95, 0xe5, 0x6e, 0x52, 0xfc, 0x6d, 0x12, 0xcd, 0x2e, 0xe6, 0x1f, 0x88, 0xcf, 0x40, 0xda,
-	0x0c, 0x64, 0xa9, 0x77, 0xe9, 0x70, 0x2f, 0xf7, 0xbe, 0xd3, 0xdf, 0x1d, 0x74, 0x16, 0x92, 0xe0,
-	0x11, 0xea, 0x48, 0xe6, 0xcc, 0x07, 0xab, 0xde, 0x9f, 0xbf, 0xbf, 0x6e, 0xa2, 0xb4, 0x23, 0x19,
-	0xbe, 0x41, 0xfd, 0x9a, 0x6b, 0x06, 0x55, 0xdc, 0x39, 0xa4, 0x02, 0x88, 0x6f, 0xd1, 0x59, 0xcd,
-	0x2b, 0x23, 0x41, 0xc7, 0xdd, 0x43, 0xbe, 0x45, 0xf1, 0x1d, 0xea, 0x87, 0x68, 0x43, 0x17, 0x6d,
-	0x44, 0xfc, 0xe1, 0xc8, 0xd1, 0x05, 0xd2, 0x20, 0xc2, 0x29, 0xba, 0x3e, 0x58, 0x8a, 0x71, 0x93,
-	0x57, 0xb2, 0x6c, 0xaa, 0xd7, 0x36, 0x6b, 0x4d, 0x47, 0xfb, 0xd6, 0x87, 0x7d, 0x27, 0xfe, 0x82,
-	0xb0, 0x02, 0x21, 0x73, 0x37, 0xb0, 0x96, 0x39, 0xcf, 0x24, 0x33, 0xf1, 0x9b, 0x49, 0x77, 0x36,
-	0x48, 0x87, 0x81, 0x79, 0x70, 0xc4, 0x23, 0x33, 0xf8, 0x11, 0x61, 0x45, 0x8d, 0xcd, 0x9a, 0xf3,
-	0x6f, 0xb5, 0xcc, 0xa9, 0x73, 0xef, 0x39, 0xf7, 0xf1, 0x7f, 0xee, 0xeb, 0xf6, 0xdf, 0xa6, 0x57,
-	0x4d, 0xd7, 0xfd, 0x61, 0xd3, 0xf4, 0x2b, 0x3a, 0x0f, 0x5b, 0x1a, 0xfc, 0x19, 0xf5, 0xa4, 0xe5,
-	0x85, 0x89, 0xa3, 0x49, 0x77, 0x76, 0x31, 0x7f, 0x77, 0x72, 0x86, 0xd4, 0xb3, 0xab, 0x35, 0x7a,
-	0x0f, 0x95, 0x20, 0x50, 0x72, 0x9d, 0x43, 0xc5, 0x82, 0x6a, 0x75, 0xf9, 0xdd, 0x7d, 0x83, 0xf8,
-	0x07, 0x11, 0xd2, 0xbe, 0x6c, 0x37, 0xcd, 0x13, 0x49, 0x5a, 0x69, 0xe2, 0xa5, 0x77, 0xe1, 0x41,
-	0xd6, 0x8b, 0x44, 0x40, 0xc0, 0x36, 0x7d, 0x07, 0x2e, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x4d,
-	0xb1, 0x4a, 0xa8, 0x11, 0x03, 0x00, 0x00,
+	// 405 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xd1, 0x6a, 0xdb, 0x30,
+	0x14, 0x86, 0x71, 0xb2, 0xb8, 0xab, 0x4a, 0x59, 0xaa, 0x2d, 0xc3, 0xf3, 0x28, 0x35, 0x81, 0x81,
+	0x2f, 0x56, 0x99, 0xb5, 0x2f, 0xb0, 0xa4, 0xbd, 0xe9, 0xad, 0x28, 0xbb, 0xd8, 0x8d, 0x51, 0x24,
+	0xd5, 0x15, 0xd8, 0x3a, 0xc6, 0x52, 0x0c, 0x7d, 0xc8, 0xbd, 0xc1, 0x1e, 0x60, 0x4f, 0xb0, 0xeb,
+	0x11, 0x49, 0x26, 0x4e, 0x06, 0xbd, 0x32, 0xfa, 0xbf, 0xff, 0xfc, 0xe7, 0x1c, 0xc9, 0xe8, 0x73,
+	0x0f, 0xb5, 0x7d, 0x66, 0x65, 0xdb, 0x81, 0x05, 0x53, 0x30, 0xc1, 0x5a, 0x2b, 0x3b, 0xe2, 0x8e,
+	0x38, 0xf6, 0x30, 0xfd, 0x54, 0x01, 0x54, 0xb5, 0x2c, 0x9c, 0xba, 0xd9, 0x3e, 0x15, 0x4c, 0xbf,
+	0x78, 0x4b, 0x9a, 0x1e, 0xd6, 0x73, 0x68, 0x1a, 0xd0, 0x81, 0x25, 0x87, 0xac, 0x91, 0x96, 0x05,
+	0x72, 0x75, 0x1c, 0x68, 0x55, 0x23, 0x8d, 0x65, 0x4d, 0xeb, 0x0d, 0x4b, 0x8a, 0xce, 0x57, 0x7e,
+	0x94, 0x3b, 0xd0, 0x4f, 0xaa, 0xc2, 0x2b, 0x74, 0xc1, 0x84, 0x50, 0x56, 0x81, 0x66, 0x75, 0xc9,
+	0x9d, 0x98, 0x7c, 0xcf, 0xa2, 0xfc, 0xec, 0xe6, 0x03, 0xf1, 0x69, 0x64, 0x48, 0x23, 0x2b, 0xfd,
+	0x42, 0xe7, 0x7b, 0xbb, 0x8f, 0x58, 0xfe, 0x9e, 0xa0, 0x93, 0x10, 0x8a, 0x17, 0x68, 0xa2, 0x44,
+	0x12, 0x65, 0x51, 0x7e, 0xba, 0x9e, 0xfd, 0xf9, 0xfb, 0xeb, 0x32, 0xa2, 0x13, 0x25, 0xf0, 0x25,
+	0x8a, 0x7b, 0xa9, 0x05, 0x74, 0xc9, 0x64, 0x8c, 0x82, 0x88, 0xaf, 0xd0, 0x49, 0x2f, 0x3b, 0xa3,
+	0x40, 0x27, 0xd3, 0x31, 0x1f, 0x54, 0x7c, 0x8d, 0xe2, 0x30, 0xda, 0xdc, 0x8d, 0xb6, 0x20, 0xfe,
+	0x0a, 0xc8, 0xc1, 0x32, 0x34, 0x98, 0x30, 0x45, 0x1f, 0x47, 0x4b, 0x09, 0x69, 0x78, 0xa7, 0xda,
+	0xdd, 0xe9, 0xb5, 0xcd, 0x86, 0xa6, 0x8b, 0x7d, 0xe9, 0xfd, 0xbe, 0x12, 0x7f, 0x45, 0xb8, 0x86,
+	0x4a, 0x71, 0x17, 0xd8, 0x2b, 0x2e, 0x4b, 0x25, 0x4c, 0xf2, 0x26, 0x9b, 0xe6, 0xa7, 0x74, 0x1e,
+	0xc8, 0xbd, 0x03, 0x0f, 0xc2, 0xe0, 0x07, 0x84, 0x6b, 0x66, 0x6c, 0xb9, 0x7b, 0xb7, 0xad, 0x56,
+	0x9c, 0xb9, 0xee, 0x33, 0xd7, 0x3d, 0xfd, 0xaf, 0xfb, 0xe3, 0xf0, 0x4a, 0xf4, 0x62, 0x57, 0x75,
+	0x37, 0x2e, 0x5a, 0x7e, 0x43, 0x6f, 0xc3, 0x96, 0x06, 0x7f, 0x41, 0x33, 0x65, 0x65, 0x63, 0x92,
+	0x28, 0x9b, 0xe6, 0x67, 0x37, 0xef, 0x8e, 0xae, 0x81, 0x7a, 0xba, 0x7e, 0x44, 0xef, 0xa1, 0xab,
+	0x08, 0xb4, 0x52, 0x73, 0xe8, 0x44, 0x70, 0xad, 0xcf, 0x7f, 0xb8, 0x6f, 0x30, 0xff, 0x24, 0x95,
+	0xb2, 0xcf, 0xdb, 0x0d, 0xe1, 0xd0, 0x14, 0x83, 0xb5, 0xf0, 0xd6, 0xeb, 0xf0, 0x6b, 0xf5, 0xb7,
+	0x45, 0x05, 0x41, 0xdb, 0xc4, 0x4e, 0xbc, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x4e, 0xc5, 0xdf,
+	0x09, 0xdb, 0x02, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
index f6512d6..172221f 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
@@ -50,18 +50,6 @@
 // IDs from public import voltha_protos/common.proto
 type IDs = common.IDs
 
-// LogLevel from public import voltha_protos/common.proto
-type LogLevel = common.LogLevel
-
-// Logging from public import voltha_protos/common.proto
-type Logging = common.Logging
-
-// LoggingComponent from public import voltha_protos/common.proto
-type LoggingComponent = common.LoggingComponent
-
-// Loggings from public import voltha_protos/common.proto
-type Loggings = common.Loggings
-
 // AdminState from public import voltha_protos/common.proto
 type AdminState = common.AdminState
 
@@ -82,19 +70,6 @@
 
 const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
 
-// LogLevel_Types from public import voltha_protos/common.proto
-type LogLevel_Types = common.LogLevel_Types
-
-var LogLevel_Types_name = common.LogLevel_Types_name
-var LogLevel_Types_value = common.LogLevel_Types_value
-
-const LogLevel_DEBUG = LogLevel_Types(common.LogLevel_DEBUG)
-const LogLevel_INFO = LogLevel_Types(common.LogLevel_INFO)
-const LogLevel_WARNING = LogLevel_Types(common.LogLevel_WARNING)
-const LogLevel_ERROR = LogLevel_Types(common.LogLevel_ERROR)
-const LogLevel_CRITICAL = LogLevel_Types(common.LogLevel_CRITICAL)
-const LogLevel_FATAL = LogLevel_Types(common.LogLevel_FATAL)
-
 // AdminState_Types from public import voltha_protos/common.proto
 type AdminState_Types = common.AdminState_Types
 
@@ -2015,162 +1990,157 @@
 func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
 
 var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2467 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x9a, 0xcd, 0x73, 0xdb, 0xc6,
-	0x15, 0xc0, 0x05, 0x7d, 0xeb, 0x89, 0x92, 0xc8, 0xa5, 0x3e, 0x68, 0x4a, 0x8a, 0xed, 0x8d, 0x63,
-	0xab, 0x4a, 0x4c, 0xda, 0x96, 0xe3, 0x69, 0xed, 0x66, 0x1a, 0x89, 0x92, 0x55, 0xd6, 0x92, 0xc9,
-	0x42, 0x96, 0xdd, 0x8f, 0x78, 0x38, 0x20, 0xb1, 0xa4, 0x30, 0x06, 0x01, 0x16, 0xbb, 0xa4, 0xa3,
-	0xf1, 0xe4, 0x92, 0x7e, 0xa4, 0xf7, 0xdc, 0x7b, 0x6a, 0xa7, 0x33, 0xfd, 0x5f, 0x72, 0xea, 0xa9,
-	0xd7, 0x4e, 0x0f, 0xfd, 0x0b, 0x32, 0xd3, 0x5b, 0x67, 0x3f, 0x40, 0x02, 0x04, 0x20, 0x89, 0x69,
-	0x66, 0x7a, 0xb2, 0xb1, 0x6f, 0xf7, 0xf7, 0xde, 0xbe, 0xdd, 0x7d, 0xfb, 0xf6, 0x51, 0x90, 0xef,
-	0xb9, 0x36, 0x3b, 0x33, 0x6a, 0x1d, 0xcf, 0x65, 0x2e, 0x2d, 0xca, 0xaf, 0x82, 0xf8, 0x42, 0xd3,
-	0xf2, 0x2b, 0xbf, 0xd1, 0x72, 0xdd, 0x96, 0x4d, 0x8a, 0x46, 0xc7, 0x2a, 0x1a, 0x8e, 0xe3, 0x32,
-	0x83, 0x59, 0xae, 0x43, 0x65, 0xaf, 0xfc, 0xba, 0x92, 0x8a, 0xaf, 0x7a, 0xb7, 0x59, 0x24, 0xed,
-	0x0e, 0x3b, 0x57, 0xc2, 0x5c, 0x18, 0xdf, 0x26, 0x4c, 0xc1, 0xf3, 0x43, 0x8a, 0x1b, 0x6e, 0xbb,
-	0xed, 0x3a, 0xf1, 0xb2, 0x33, 0x62, 0xd8, 0xec, 0x4c, 0xc9, 0x70, 0x58, 0x66, 0xbb, 0x2d, 0xab,
-	0x61, 0xd8, 0x35, 0x93, 0xf4, 0xac, 0x06, 0x89, 0x1f, 0x1f, 0x92, 0xad, 0x87, 0x65, 0x86, 0x69,
-	0x74, 0x18, 0xf1, 0x94, 0xf0, 0x7a, 0x58, 0xe8, 0x76, 0x88, 0xd3, 0xb4, 0xdd, 0xb7, 0xb5, 0xfb,
-	0x3b, 0x09, 0x1d, 0xda, 0x0d, 0xab, 0xd6, 0xb6, 0xea, 0x35, 0xb3, 0xae, 0x3a, 0xdc, 0x8c, 0xe9,
-	0x60, 0xd8, 0x86, 0xd7, 0xee, 0x77, 0xc1, 0x7f, 0xd6, 0x60, 0x7e, 0x5f, 0x98, 0x74, 0xe8, 0xb9,
-	0xdd, 0x0e, 0x5a, 0x81, 0x71, 0xcb, 0xcc, 0x69, 0x37, 0xb4, 0xad, 0xb9, 0xbd, 0xa9, 0x7f, 0x7f,
-	0xfb, 0xcd, 0xa6, 0xa6, 0x8f, 0x5b, 0x26, 0x2a, 0xc3, 0x52, 0x78, 0x72, 0x34, 0x37, 0x7e, 0x63,
-	0x62, 0x6b, 0xfe, 0xc1, 0x4a, 0x41, 0xad, 0xd2, 0x91, 0x14, 0x4b, 0xd6, 0xde, 0xdc, 0x3f, 0xbf,
-	0xfd, 0x66, 0x73, 0x92, 0xb3, 0xf4, 0x45, 0x3b, 0x28, 0xa1, 0x68, 0x07, 0x66, 0x7c, 0xc4, 0x84,
-	0x40, 0x2c, 0xfa, 0x88, 0xe8, 0x58, 0xbf, 0x27, 0xfe, 0x11, 0xa4, 0x02, 0x56, 0x52, 0xf4, 0x03,
-	0x98, 0xb2, 0x18, 0x69, 0xd3, 0x9c, 0x26, 0x10, 0xd9, 0x30, 0x42, 0x74, 0xd2, 0x65, 0x0f, 0xfc,
-	0x27, 0x0d, 0xd0, 0x41, 0x8f, 0x38, 0xec, 0xa9, 0x65, 0x33, 0xe2, 0xe9, 0x5d, 0x9b, 0x3c, 0x23,
-	0xe7, 0xf8, 0x2b, 0x0d, 0xb2, 0x43, 0xcd, 0x2f, 0xce, 0x3b, 0x04, 0x2d, 0x02, 0x34, 0x45, 0x4b,
-	0xcd, 0xb0, 0xed, 0xf4, 0x18, 0x4a, 0xc1, 0x6c, 0xc3, 0x60, 0xa4, 0xe5, 0x7a, 0xe7, 0x69, 0x0d,
-	0xa5, 0x21, 0x45, 0xbb, 0xf5, 0x5a, 0xbf, 0x65, 0x1c, 0x21, 0x58, 0x7c, 0xd3, 0xb1, 0x6a, 0x84,
-	0xa3, 0x6a, 0xec, 0xbc, 0x43, 0xd2, 0x13, 0x68, 0x05, 0x32, 0x0d, 0xd7, 0x69, 0x5a, 0xad, 0x60,
-	0xf3, 0x24, 0x6f, 0x96, 0xf3, 0x09, 0x36, 0x4f, 0x61, 0x0b, 0x96, 0x86, 0x0c, 0x41, 0x9f, 0xc2,
-	0xc4, 0x1b, 0x72, 0x2e, 0x96, 0x61, 0xf1, 0x41, 0xc1, 0x9f, 0x5c, 0x74, 0x16, 0x85, 0x98, 0x19,
-	0xe8, 0x7c, 0x28, 0x5a, 0x86, 0xa9, 0x9e, 0x61, 0x77, 0x49, 0x6e, 0x9c, 0x2f, 0xa5, 0x2e, 0x3f,
-	0xf0, 0x5f, 0x35, 0x98, 0x0f, 0x0c, 0x49, 0x5a, 0xed, 0x55, 0x98, 0x26, 0x8e, 0x51, 0xb7, 0xe5,
-	0xe8, 0x59, 0x5d, 0x7d, 0xa1, 0x75, 0x98, 0x53, 0x13, 0xb0, 0xcc, 0xdc, 0x84, 0x00, 0xcf, 0xca,
-	0x86, 0xb2, 0x89, 0x36, 0x01, 0x06, 0xd3, 0xca, 0x4d, 0x0a, 0xe9, 0x9c, 0x68, 0x11, 0x7e, 0xbd,
-	0x0b, 0x53, 0x5e, 0xd7, 0x26, 0x34, 0x37, 0x25, 0x56, 0x6c, 0x2d, 0x61, 0x52, 0xba, 0xec, 0x85,
-	0x3f, 0x81, 0x54, 0x40, 0x42, 0xd1, 0x5d, 0x98, 0x91, 0xcb, 0x12, 0x59, 0xf2, 0x20, 0xc0, 0xef,
-	0x83, 0xdf, 0x40, 0xaa, 0xe4, 0x7a, 0xa4, 0xec, 0x50, 0x66, 0x38, 0x0d, 0x82, 0x6e, 0xc3, 0xbc,
-	0xa5, 0xfe, 0x5f, 0x1b, 0x9e, 0x31, 0xf8, 0x92, 0xb2, 0x89, 0x76, 0x60, 0x5a, 0x1e, 0x70, 0x31,
-	0xf3, 0xf9, 0x07, 0xcb, 0xbe, 0x96, 0x9f, 0x8a, 0xd6, 0x13, 0x66, 0xb0, 0x2e, 0xdd, 0x9b, 0xe2,
-	0x3b, 0x74, 0x4c, 0x57, 0x5d, 0xf1, 0x13, 0x58, 0x08, 0x2a, 0xa3, 0x68, 0x3b, 0xbc, 0x3b, 0xfb,
-	0x90, 0x60, 0x2f, 0x7f, 0x7b, 0xfe, 0x63, 0x12, 0xa6, 0x5f, 0x0a, 0x31, 0xba, 0x0e, 0x33, 0x3d,
-	0xe2, 0x51, 0xcb, 0x75, 0xc2, 0x06, 0xfa, 0xad, 0xe8, 0x11, 0xcc, 0xaa, 0x10, 0xe1, 0x1f, 0xbf,
-	0x25, 0x1f, 0xbd, 0x2b, 0xdb, 0x83, 0x87, 0xa7, 0xdf, 0x37, 0xee, 0xf4, 0x4e, 0xfc, 0xef, 0xa7,
-	0x77, 0xf2, 0xaa, 0xa7, 0x17, 0x7d, 0x0a, 0x29, 0xb5, 0x6f, 0xf8, 0xde, 0xf0, 0xb7, 0x00, 0x0a,
-	0x8f, 0xe4, 0xbb, 0x24, 0x38, 0x7a, 0xde, 0xec, 0x37, 0x53, 0x54, 0x82, 0x05, 0x45, 0x68, 0x89,
-	0x00, 0x90, 0x9b, 0x4e, 0x3c, 0xf7, 0x41, 0x86, 0x52, 0xab, 0x82, 0x46, 0x09, 0x16, 0xe4, 0x0e,
-	0xf5, 0x77, 0xd2, 0x4c, 0xe2, 0x4e, 0x0a, 0x41, 0x48, 0x70, 0x23, 0xfe, 0x1c, 0x32, 0x83, 0x40,
-	0x6b, 0x30, 0xa3, 0x6e, 0x50, 0x92, 0xdb, 0x50, 0x20, 0x2e, 0x29, 0x1c, 0x5b, 0x75, 0x69, 0xce,
-	0xbe, 0xc1, 0x8c, 0xbd, 0x34, 0x07, 0xcd, 0x07, 0x0e, 0x8e, 0xbe, 0xc4, 0x7b, 0xf1, 0x4e, 0x6a,
-	0x34, 0x7a, 0x05, 0xd9, 0x60, 0x68, 0xf6, 0xa1, 0x9b, 0x6a, 0x89, 0x04, 0x74, 0x97, 0xcb, 0x2e,
-	0xc4, 0x0a, 0xb3, 0x64, 0x37, 0x45, 0xc0, 0x7f, 0xd1, 0x20, 0x7d, 0x42, 0xec, 0xe6, 0x0b, 0x42,
-	0x99, 0x4e, 0x68, 0xc7, 0x75, 0x28, 0x41, 0x3f, 0x81, 0x69, 0x8f, 0xd0, 0xae, 0xcd, 0x54, 0x78,
-	0xb9, 0xe3, 0x4f, 0x7f, 0xb8, 0x67, 0xb0, 0xa1, 0x6b, 0x33, 0x5d, 0x0d, 0xc3, 0x55, 0x58, 0x0c,
-	0x4b, 0xd0, 0x3c, 0xcc, 0x9c, 0x9c, 0x96, 0x4a, 0x07, 0x27, 0x27, 0xe9, 0x31, 0xfe, 0xf1, 0x74,
-	0xb7, 0x7c, 0x74, 0xaa, 0x1f, 0xa4, 0x35, 0x94, 0x81, 0x85, 0xe7, 0x95, 0x17, 0xb5, 0x93, 0xd3,
-	0x6a, 0xb5, 0xa2, 0xbf, 0x38, 0xd8, 0x4f, 0x8f, 0xf3, 0xa6, 0xd3, 0xe7, 0xcf, 0x9e, 0x57, 0x5e,
-	0x3d, 0xaf, 0x1d, 0xe8, 0x7a, 0x45, 0x4f, 0x4f, 0xe0, 0x0a, 0x64, 0x2a, 0xcd, 0xdd, 0x16, 0x71,
-	0xd8, 0x49, 0xb7, 0x4e, 0x1b, 0x9e, 0x55, 0x27, 0x1e, 0x8f, 0x27, 0x6e, 0xd3, 0xe0, 0x8d, 0xfd,
-	0x13, 0xab, 0xcf, 0xa9, 0x96, 0xb2, 0xc9, 0x63, 0x91, 0xba, 0xdd, 0x2c, 0x53, 0x05, 0xb9, 0x59,
-	0xd9, 0x50, 0x36, 0xf1, 0x13, 0x80, 0x63, 0xd2, 0xae, 0x13, 0x8f, 0x9e, 0x59, 0x1d, 0x4e, 0x12,
-	0xbb, 0xa6, 0xe6, 0x18, 0x6d, 0xe2, 0x93, 0x44, 0xcb, 0x73, 0xa3, 0xcd, 0x23, 0xfe, 0x78, 0x1f,
-	0x31, 0x6e, 0x99, 0xf8, 0x00, 0x52, 0x4f, 0x6d, 0xf7, 0xed, 0x31, 0x61, 0x06, 0x5f, 0x0b, 0xf4,
-	0x31, 0x4c, 0xb7, 0x49, 0x20, 0xf2, 0x6c, 0x16, 0x82, 0x57, 0xb1, 0xdb, 0xec, 0xd4, 0x84, 0xb8,
-	0x26, 0x43, 0xbe, 0xae, 0x3a, 0x3f, 0xf8, 0x4f, 0x01, 0x16, 0xe4, 0xc1, 0x3e, 0x21, 0x1e, 0x5f,
-	0x24, 0xa4, 0xc3, 0xe2, 0x69, 0xc7, 0x34, 0x18, 0x39, 0x72, 0x5b, 0x47, 0xa4, 0x47, 0x6c, 0xb4,
-	0x54, 0x50, 0xa9, 0xc6, 0x91, 0xdb, 0x6a, 0x59, 0x4e, 0x2b, 0xbf, 0x5a, 0x90, 0x09, 0x4c, 0xc1,
-	0x4f, 0x60, 0x0a, 0x07, 0x3c, 0x81, 0xc1, 0x6b, 0x5f, 0xfe, 0xfd, 0x5f, 0x5f, 0x8f, 0x67, 0x70,
-	0x4a, 0xe4, 0x3d, 0xbd, 0xfb, 0x3c, 0xd5, 0xa0, 0x8f, 0xb5, 0x6d, 0x54, 0x85, 0xd4, 0x21, 0x61,
-	0x3e, 0x90, 0xa2, 0xdc, 0x10, 0xb1, 0xe4, 0xb6, 0x3b, 0xae, 0x43, 0x1c, 0x96, 0x4f, 0x0f, 0x49,
-	0x28, 0x5e, 0x16, 0xd0, 0x45, 0x14, 0x82, 0xa2, 0x57, 0xb0, 0x70, 0x48, 0x58, 0xc0, 0x7d, 0x09,
-	0x36, 0xe5, 0xfb, 0xe7, 0x77, 0xd0, 0x17, 0xe7, 0x05, 0x72, 0x19, 0x21, 0x1f, 0xd9, 0x1e, 0x70,
-	0x5e, 0x43, 0x5a, 0x4e, 0x3f, 0xc0, 0x8e, 0x61, 0x24, 0xfa, 0x60, 0x53, 0xb0, 0xd7, 0x70, 0x0c,
-	0x9b, 0x7b, 0x62, 0x1f, 0xe6, 0x0e, 0x09, 0x53, 0xa1, 0x34, 0xc9, 0xe6, 0x7e, 0xb4, 0x92, 0xfd,
-	0xf0, 0x92, 0x60, 0xce, 0xa1, 0x19, 0xc5, 0x44, 0xaf, 0x21, 0x73, 0x64, 0x51, 0x16, 0x8e, 0xe7,
-	0x49, 0xb4, 0x95, 0xb8, 0xc0, 0x4e, 0xf1, 0x35, 0x01, 0xcd, 0xa2, 0x8c, 0x6f, 0xa8, 0xd5, 0x27,
-	0x9d, 0xc0, 0xd2, 0x21, 0x09, 0xd1, 0x11, 0xf8, 0xeb, 0x52, 0xde, 0xcf, 0xc7, 0xde, 0x14, 0xf8,
-	0x3d, 0xc1, 0xcb, 0xa1, 0xd5, 0x08, 0xaf, 0xf8, 0xce, 0x32, 0xbf, 0x40, 0x3a, 0xa4, 0xb8, 0xcd,
-	0xbb, 0x7e, 0xb8, 0x4f, 0x32, 0x37, 0x3d, 0x74, 0x59, 0x50, 0x9c, 0x13, 0x64, 0x84, 0xd2, 0x3e,
-	0xb9, 0x7f, 0x65, 0x10, 0x40, 0x9c, 0x79, 0x14, 0x8e, 0xfe, 0x49, 0xe4, 0xd5, 0xd8, 0x7b, 0x84,
-	0xe2, 0xeb, 0x82, 0x7f, 0x0d, 0xad, 0x05, 0x76, 0x58, 0xf0, 0x1a, 0x42, 0xbf, 0x86, 0xb4, 0xdc,
-	0xbe, 0x83, 0x51, 0x21, 0x87, 0xc4, 0x5f, 0x50, 0xf8, 0x96, 0xe0, 0xbe, 0x87, 0x36, 0x12, 0xb8,
-	0xd2, 0x2f, 0x4d, 0x58, 0x8d, 0xcc, 0xa1, 0xea, 0x7a, 0x8c, 0xc6, 0xfb, 0x5c, 0xf5, 0x13, 0x3d,
-	0xf0, 0xb6, 0xd0, 0x70, 0x0b, 0xe1, 0x8b, 0x34, 0x14, 0x3b, 0x82, 0xf6, 0x39, 0x2c, 0x0f, 0x4f,
-	0x82, 0x43, 0xd0, 0x4a, 0x0c, 0xb9, 0x6c, 0xe6, 0xb3, 0x31, 0xcd, 0xf8, 0xa1, 0xd0, 0x57, 0x40,
-	0x1f, 0x5d, 0xae, 0xaf, 0xf8, 0x8e, 0xff, 0x53, 0xe3, 0x33, 0xfc, 0xbd, 0x06, 0x6b, 0x07, 0x22,
-	0x37, 0xbb, 0xb2, 0xf6, 0xa4, 0xd3, 0xf5, 0x44, 0x18, 0xf0, 0x31, 0xde, 0x19, 0xc5, 0x80, 0xa2,
-	0x4a, 0x0c, 0xbf, 0xd2, 0x20, 0xb7, 0x6f, 0xd1, 0xef, 0xc5, 0x90, 0x1f, 0x0b, 0x43, 0x1e, 0xe1,
-	0x87, 0x23, 0x19, 0x62, 0x4a, 0xed, 0xc8, 0x8c, 0x59, 0x73, 0x1e, 0xcd, 0xc3, 0x6b, 0x8e, 0x42,
-	0x21, 0x5c, 0xc8, 0xaf, 0xb8, 0xe2, 0x4d, 0xc1, 0xfa, 0xad, 0x06, 0x1b, 0xfd, 0x50, 0x1e, 0x56,
-	0xf4, 0x42, 0x98, 0xb1, 0x11, 0x51, 0x20, 0xda, 0xe5, 0x98, 0xc4, 0xa9, 0xdf, 0x15, 0x26, 0xdc,
-	0xc1, 0x57, 0x30, 0x81, 0x47, 0xbc, 0xdf, 0x69, 0xb0, 0x19, 0x63, 0xc5, 0x31, 0xbf, 0x7f, 0xa4,
-	0x19, 0xeb, 0x21, 0x33, 0x84, 0xe0, 0xd8, 0x35, 0x2f, 0xb1, 0xa2, 0x20, 0xac, 0xd8, 0xc2, 0xef,
-	0x5f, 0x68, 0x85, 0xbc, 0xe5, 0xb8, 0x19, 0x2d, 0x58, 0x8b, 0xb8, 0x5c, 0xa8, 0x0a, 0xfb, 0x3c,
-	0x1b, 0xb5, 0x85, 0xe2, 0x0f, 0x85, 0xae, 0x0f, 0xd0, 0x55, 0x74, 0x21, 0x06, 0xeb, 0xb1, 0x6b,
-	0xab, 0xd2, 0xbb, 0xa0, 0xb2, 0xb5, 0x88, 0xff, 0x65, 0x27, 0x7c, 0x4f, 0x28, 0xdc, 0x46, 0x5b,
-	0x97, 0xba, 0x58, 0x65, 0x9a, 0xe8, 0x6b, 0x0d, 0x6e, 0x26, 0xac, 0xb5, 0x60, 0x4a, 0x4f, 0xdf,
-	0x8c, 0x57, 0x78, 0x95, 0x55, 0xdf, 0x11, 0x26, 0xdd, 0xc5, 0x57, 0x36, 0x89, 0x3b, 0xbd, 0x02,
-	0xf3, 0xdc, 0x17, 0x97, 0x05, 0xe6, 0xa5, 0x70, 0x82, 0x4c, 0xfd, 0x44, 0x02, 0x2d, 0xf9, 0xca,
-	0xfc, 0x48, 0x5c, 0x81, 0x85, 0x01, 0xb0, 0x6c, 0x26, 0x23, 0xe7, 0x07, 0x6e, 0x8e, 0xb9, 0xea,
-	0x24, 0xce, 0x32, 0x29, 0x3a, 0x85, 0xb4, 0x4e, 0x1a, 0xae, 0xd3, 0xb0, 0x6c, 0xe2, 0x9b, 0x19,
-	0x1c, 0x9b, 0xe8, 0x8f, 0x0d, 0xc1, 0x5c, 0xc5, 0x51, 0x26, 0x9f, 0xf8, 0x81, 0xb8, 0xe6, 0x63,
-	0xae, 0x8a, 0xa1, 0x87, 0x88, 0x8f, 0x41, 0xcb, 0x43, 0x33, 0x95, 0x77, 0xc3, 0xcf, 0x20, 0x55,
-	0xf2, 0x88, 0xc1, 0x94, 0x69, 0x68, 0x68, 0x74, 0x84, 0xa6, 0x12, 0x1b, 0x3c, 0xec, 0x37, 0x6e,
-	0xd2, 0x2b, 0x48, 0xc9, 0x20, 0x1c, 0x63, 0x55, 0xd2, 0x24, 0xdf, 0x17, 0xbc, 0x4d, 0xbc, 0x1e,
-	0x67, 0x9d, 0x1f, 0x56, 0x7f, 0x09, 0x0b, 0x2a, 0xaa, 0x8e, 0x40, 0x56, 0x77, 0x23, 0xde, 0x88,
-	0x25, 0xfb, 0x71, 0xf2, 0x15, 0xa4, 0x74, 0x52, 0x77, 0x5d, 0xf6, 0xbd, 0xd9, 0xec, 0x09, 0x1c,
-	0x07, 0xef, 0x13, 0x9b, 0xb0, 0xef, 0xe0, 0x8c, 0xed, 0x78, 0xb0, 0x29, 0x70, 0xa8, 0x0b, 0x0b,
-	0xfb, 0xee, 0x5b, 0xc7, 0x76, 0x0d, 0xb3, 0xdc, 0x36, 0x5a, 0x64, 0x70, 0xaf, 0x88, 0x4f, 0x5f,
-	0x96, 0x5f, 0xf1, 0x15, 0x56, 0x3a, 0xc4, 0x13, 0xc5, 0x41, 0xfe, 0xa0, 0xc1, 0x8f, 0x84, 0x8e,
-	0x7b, 0xf8, 0xc3, 0x58, 0x1d, 0x16, 0x47, 0xd4, 0x4c, 0xc5, 0xa0, 0xc5, 0x77, 0xfc, 0xa9, 0xf0,
-	0x05, 0x5f, 0xdc, 0x2f, 0x35, 0x58, 0x3d, 0x24, 0x2c, 0xa4, 0x43, 0x96, 0x01, 0x92, 0x0d, 0x88,
-	0x6b, 0xc6, 0x8f, 0x85, 0x01, 0x0f, 0xd1, 0x83, 0x11, 0x0c, 0x28, 0x52, 0xa9, 0xa9, 0x2b, 0xd2,
-	0xa4, 0x10, 0x6f, 0x44, 0xed, 0x2a, 0xc8, 0xa0, 0x51, 0xa6, 0x8f, 0x9a, 0x32, 0x09, 0x0c, 0x91,
-	0xe8, 0xd0, 0x8a, 0xc6, 0x69, 0xa3, 0xf8, 0x23, 0xa1, 0xee, 0x36, 0xba, 0x75, 0x15, 0x75, 0xe8,
-	0x73, 0xc8, 0x96, 0x78, 0x3e, 0x6b, 0x5f, 0x71, 0x86, 0xb1, 0x0b, 0xac, 0x66, 0xb8, 0x3d, 0xd2,
-	0x0c, 0xff, 0xa8, 0x41, 0x76, 0xb7, 0xc1, 0xac, 0x9e, 0xc1, 0x88, 0xd0, 0x22, 0x63, 0xf5, 0x88,
-	0xaa, 0x4b, 0x42, 0xf5, 0x27, 0xf8, 0x87, 0xa3, 0x2c, 0xad, 0x6c, 0xee, 0x0a, 0x7d, 0x7c, 0xa3,
-	0xfd, 0x41, 0x83, 0x8c, 0x4e, 0x7a, 0xc4, 0x63, 0xff, 0x17, 0x43, 0x3c, 0xa1, 0x5a, 0x3e, 0x29,
-	0x97, 0x06, 0x37, 0x41, 0x34, 0x5f, 0x5e, 0xf0, 0x2d, 0x92, 0x89, 0x32, 0x16, 0x2a, 0x37, 0x50,
-	0x3e, 0x56, 0xa5, 0x4c, 0x90, 0x5f, 0x43, 0x36, 0x40, 0x6c, 0x97, 0xc4, 0x43, 0x39, 0x4c, 0xcd,
-	0xf4, 0xa9, 0xbe, 0x18, 0xdf, 0x11, 0xe4, 0x9b, 0xe8, 0x7a, 0x3c, 0xb9, 0xad, 0x1e, 0xdc, 0x14,
-	0x39, 0xb0, 0x22, 0xbd, 0x35, 0xac, 0x20, 0x0a, 0x4d, 0x0c, 0x41, 0x2a, 0xfb, 0xc3, 0x97, 0x29,
-	0xe3, 0x0e, 0x3a, 0x0d, 0x3a, 0xe8, 0x6a, 0xc9, 0xe5, 0xc5, 0x5e, 0x92, 0x49, 0x25, 0x81, 0xe5,
-	0x30, 0x76, 0x94, 0xbc, 0x66, 0x4b, 0x28, 0xc0, 0xe8, 0x46, 0xa2, 0x02, 0x3f, 0x9f, 0xf9, 0x2c,
-	0x68, 0xbd, 0xac, 0xae, 0x25, 0x5d, 0xf5, 0xd9, 0x68, 0x85, 0x8e, 0x26, 0xdd, 0xab, 0xb2, 0xb4,
-	0x87, 0x74, 0x51, 0x3d, 0x18, 0xf4, 0x1f, 0xf2, 0x4c, 0x84, 0x87, 0x6f, 0x0a, 0xdc, 0x3a, 0xba,
-	0x16, 0x87, 0x93, 0x77, 0x75, 0x0d, 0xd2, 0x03, 0x8b, 0x95, 0x53, 0x92, 0x4c, 0x5e, 0x8e, 0xa9,
-	0x08, 0x52, 0xbf, 0x74, 0x80, 0x56, 0x86, 0x94, 0x28, 0x97, 0x3c, 0x85, 0xf4, 0x09, 0xf3, 0x88,
-	0xd1, 0xae, 0x1a, 0x8d, 0x37, 0x84, 0xd1, 0x4a, 0x97, 0xa1, 0xd5, 0x90, 0xa7, 0xa5, 0xa0, 0xd2,
-	0x65, 0x89, 0x1b, 0x68, 0x6c, 0x4b, 0x43, 0x07, 0x22, 0xe5, 0x21, 0x56, 0x8f, 0x28, 0x50, 0xd9,
-	0xb9, 0xa0, 0x76, 0x10, 0xe5, 0x97, 0x1d, 0x3c, 0x76, 0x4f, 0x43, 0xcf, 0x20, 0xab, 0x30, 0xa5,
-	0x33, 0xc3, 0x69, 0x11, 0x51, 0x97, 0x4c, 0x9e, 0x72, 0x2e, 0x44, 0x0a, 0x0c, 0x11, 0xb0, 0x53,
-	0x58, 0xec, 0x2f, 0x88, 0xfc, 0x89, 0x27, 0x9c, 0x94, 0x47, 0xdd, 0x95, 0xb4, 0x59, 0x95, 0xb7,
-	0xfc, 0x35, 0xc9, 0xc8, 0xfc, 0x29, 0xf8, 0x73, 0x42, 0x5c, 0x25, 0x35, 0x1f, 0xd7, 0x88, 0x6f,
-	0x08, 0x15, 0x79, 0xdc, 0x5f, 0x90, 0x50, 0x61, 0x96, 0x1f, 0xb2, 0x97, 0xc2, 0xee, 0x20, 0x3d,
-	0xf6, 0xd1, 0x1e, 0xfc, 0x91, 0x20, 0x6a, 0x78, 0x88, 0x2a, 0x0d, 0x37, 0x21, 0x23, 0x83, 0xc5,
-	0x77, 0x33, 0xfc, 0x03, 0xa1, 0xe2, 0x7a, 0xfe, 0x02, 0x15, 0xdc, 0x7a, 0x13, 0x32, 0x32, 0x0b,
-	0xba, 0x54, 0x4b, 0xd2, 0x7e, 0x52, 0x73, 0xd9, 0xbe, 0x68, 0x2e, 0xea, 0x60, 0x84, 0x7e, 0x28,
-	0xb9, 0xf4, 0x60, 0x84, 0x3c, 0x16, 0x39, 0x18, 0x21, 0x2d, 0xe8, 0x48, 0x24, 0xdb, 0xe2, 0xea,
-	0xa1, 0xf1, 0xc9, 0xb6, 0x94, 0xf9, 0x19, 0x1c, 0x5a, 0x4f, 0xbe, 0x78, 0x28, 0xfa, 0x05, 0xcc,
-	0xfa, 0x85, 0xe3, 0x10, 0x2c, 0x97, 0x54, 0x81, 0xc6, 0xb7, 0x05, 0xf6, 0x06, 0x7e, 0x2f, 0x16,
-	0x4b, 0x89, 0xdd, 0xac, 0x31, 0x4e, 0x7b, 0x29, 0xf2, 0xa3, 0x50, 0xe1, 0x7d, 0xf8, 0xed, 0x19,
-	0xa9, 0xcc, 0x47, 0x23, 0x0f, 0x3f, 0x46, 0xbc, 0x9f, 0x7a, 0x74, 0x5a, 0x75, 0xf4, 0x19, 0xa0,
-	0x43, 0xc2, 0x86, 0x6a, 0xef, 0x43, 0x05, 0xaa, 0xb8, 0xf2, 0x7c, 0xd4, 0x1f, 0x61, 0xb6, 0xa8,
-	0xf4, 0x23, 0x0a, 0x0b, 0x27, 0x56, 0xbb, 0x6b, 0x1b, 0x8c, 0x88, 0xf1, 0x68, 0xa3, 0xef, 0x88,
-	0x60, 0xb3, 0x4e, 0x7e, 0xd3, 0x25, 0x94, 0x25, 0xdd, 0xf9, 0x91, 0xa2, 0x41, 0xd8, 0x47, 0x8a,
-	0x54, 0xe3, 0x24, 0xbe, 0x33, 0x4b, 0x30, 0xd7, 0x2f, 0xb2, 0xa3, 0x6b, 0xbe, 0xc2, 0x48, 0xf9,
-	0x3d, 0x9f, 0x2c, 0xc2, 0x63, 0xe8, 0x18, 0x40, 0xbe, 0x78, 0x44, 0x81, 0x27, 0x15, 0xcc, 0x08,
-	0x12, 0x37, 0xb4, 0x7a, 0x2a, 0xe2, 0x45, 0x6e, 0xe3, 0x60, 0xb4, 0x7a, 0xcc, 0xaa, 0x77, 0xce,
-	0x08, 0xbc, 0xc1, 0x8b, 0xac, 0x77, 0xbf, 0x18, 0x18, 0xfe, 0x58, 0xdb, 0xde, 0xb3, 0x21, 0xeb,
-	0x7a, 0x2d, 0x11, 0x17, 0x1b, 0xae, 0x67, 0x2a, 0xde, 0x5e, 0x4a, 0x56, 0x7d, 0xab, 0xe2, 0xe7,
-	0xf0, 0x5f, 0x15, 0x5a, 0x16, 0x3b, 0xeb, 0xd6, 0xb9, 0x57, 0x8b, 0x7e, 0x4f, 0xf5, 0x37, 0x07,
-	0x77, 0xfd, 0xbf, 0x40, 0xd8, 0x29, 0xb6, 0x5c, 0xd5, 0xf6, 0xb7, 0xf1, 0xd5, 0x8a, 0xcf, 0x7b,
-	0x19, 0x2c, 0x22, 0x57, 0xc7, 0xab, 0x13, 0xd5, 0xc9, 0xea, 0x54, 0x75, 0xba, 0x3a, 0x53, 0x9d,
-	0xad, 0x4f, 0x8b, 0xb1, 0x3b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x70, 0x28, 0xbe, 0x4c, 0xcd,
-	0x20, 0x00, 0x00,
+	// 2400 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4b, 0x73, 0x1b, 0xc7,
+	0x11, 0xe6, 0xf2, 0xcd, 0x26, 0x48, 0x02, 0x03, 0x3e, 0x20, 0x90, 0xb4, 0xa4, 0xb1, 0x2c, 0x31,
+	0xb4, 0x09, 0x48, 0xa2, 0xac, 0x4a, 0xa4, 0xb8, 0x62, 0xbe, 0xc4, 0x20, 0x12, 0x05, 0x64, 0x29,
+	0x4a, 0x79, 0x58, 0x85, 0x5a, 0x60, 0x07, 0xe0, 0x96, 0x16, 0x58, 0x64, 0x77, 0x40, 0x99, 0xa5,
+	0xf2, 0xc5, 0x79, 0x38, 0x77, 0xdf, 0x73, 0x4a, 0x2a, 0x55, 0xf9, 0x2f, 0x3e, 0xf9, 0x94, 0x6b,
+	0x2a, 0x87, 0xfc, 0x02, 0x9f, 0x53, 0xd3, 0x33, 0x0b, 0xec, 0x62, 0x77, 0x49, 0xc2, 0x71, 0x55,
+	0x4e, 0xe4, 0x4e, 0xf7, 0x7c, 0xfd, 0x75, 0xcf, 0x4c, 0x4f, 0x4f, 0x03, 0xf2, 0x67, 0x8e, 0xcd,
+	0x4f, 0x8d, 0x6a, 0xc7, 0x75, 0xb8, 0xe3, 0x15, 0xe5, 0x57, 0x01, 0xbf, 0xc8, 0xa4, 0xfc, 0xca,
+	0xaf, 0x35, 0x1d, 0xa7, 0x69, 0xb3, 0xa2, 0xd1, 0xb1, 0x8a, 0x46, 0xbb, 0xed, 0x70, 0x83, 0x5b,
+	0x4e, 0xdb, 0x93, 0x5a, 0xf9, 0x55, 0x25, 0xc5, 0xaf, 0x5a, 0xb7, 0x51, 0x64, 0xad, 0x0e, 0x3f,
+	0x57, 0xc2, 0x5c, 0x18, 0xbe, 0xc5, 0xb8, 0x02, 0xcf, 0x0f, 0x18, 0xae, 0x3b, 0xad, 0x96, 0xd3,
+	0x8e, 0x97, 0x9d, 0x32, 0xc3, 0xe6, 0xa7, 0x4a, 0x46, 0xc3, 0x32, 0xdb, 0x69, 0x5a, 0x75, 0xc3,
+	0xae, 0x9a, 0xec, 0xcc, 0xaa, 0xb3, 0xf8, 0xf9, 0x21, 0xd9, 0x6a, 0x58, 0x66, 0x98, 0x46, 0x87,
+	0x33, 0x57, 0x09, 0xaf, 0x87, 0x85, 0x4e, 0x87, 0xb5, 0x1b, 0xb6, 0xf3, 0xb6, 0x7a, 0x6f, 0x3b,
+	0x41, 0xa1, 0x55, 0xb7, 0xaa, 0x2d, 0xab, 0x56, 0x35, 0x6b, 0x4a, 0xe1, 0x66, 0x8c, 0x82, 0x61,
+	0x1b, 0x6e, 0xab, 0xa7, 0x42, 0xff, 0xaa, 0xc1, 0xec, 0x3e, 0x52, 0x3a, 0x74, 0x9d, 0x6e, 0x87,
+	0x2c, 0xc1, 0xa8, 0x65, 0xe6, 0xb4, 0x1b, 0xda, 0xc6, 0xcc, 0xee, 0xc4, 0x7f, 0xbe, 0xfb, 0x66,
+	0x5d, 0xd3, 0x47, 0x2d, 0x93, 0x94, 0x60, 0x21, 0xec, 0x9c, 0x97, 0x1b, 0xbd, 0x31, 0xb6, 0x31,
+	0x7b, 0x7f, 0xa9, 0xa0, 0x56, 0xe9, 0x99, 0x14, 0x4b, 0xac, 0xdd, 0x99, 0x7f, 0x7d, 0xf7, 0xcd,
+	0xfa, 0xb8, 0xc0, 0xd2, 0xe7, 0xed, 0xa0, 0xc4, 0x23, 0xdb, 0x30, 0xe5, 0x43, 0x8c, 0x21, 0xc4,
+	0xbc, 0x0f, 0x11, 0x9d, 0xeb, 0x6b, 0xd2, 0x9f, 0x40, 0x2a, 0xc0, 0xd2, 0x23, 0x3f, 0x82, 0x09,
+	0x8b, 0xb3, 0x96, 0x97, 0xd3, 0x10, 0x22, 0x1b, 0x86, 0x40, 0x25, 0x5d, 0x6a, 0xd0, 0xbf, 0x68,
+	0x40, 0x0e, 0xce, 0x58, 0x9b, 0x3f, 0xb1, 0x6c, 0xce, 0x5c, 0xbd, 0x6b, 0xb3, 0xa7, 0xec, 0x9c,
+	0x7e, 0xa5, 0x41, 0x76, 0x60, 0xf8, 0xc5, 0x79, 0x87, 0x91, 0x79, 0x80, 0x06, 0x8e, 0x54, 0x0d,
+	0xdb, 0x4e, 0x8f, 0x90, 0x14, 0x4c, 0xd7, 0x0d, 0xce, 0x9a, 0x8e, 0x7b, 0x9e, 0xd6, 0x48, 0x1a,
+	0x52, 0x5e, 0xb7, 0x56, 0xed, 0x8d, 0x8c, 0x12, 0x02, 0xf3, 0x6f, 0x3a, 0x56, 0x95, 0x09, 0xa8,
+	0x2a, 0x3f, 0xef, 0xb0, 0xf4, 0x18, 0x59, 0x82, 0x4c, 0xdd, 0x69, 0x37, 0xac, 0x66, 0x70, 0x78,
+	0x5c, 0x0c, 0x4b, 0x7f, 0x82, 0xc3, 0x13, 0xd4, 0x82, 0x85, 0x01, 0x22, 0xe4, 0x53, 0x18, 0x7b,
+	0xc3, 0xce, 0x71, 0x19, 0xe6, 0xef, 0x17, 0x7c, 0xe7, 0xa2, 0x5e, 0x14, 0x62, 0x3c, 0xd0, 0xc5,
+	0x54, 0xb2, 0x08, 0x13, 0x67, 0x86, 0xdd, 0x65, 0xb9, 0x51, 0xb1, 0x94, 0xba, 0xfc, 0xa0, 0x7f,
+	0xd7, 0x60, 0x36, 0x30, 0x25, 0x69, 0xb5, 0x97, 0x61, 0x92, 0xb5, 0x8d, 0x9a, 0x2d, 0x67, 0x4f,
+	0xeb, 0xea, 0x8b, 0xac, 0xc2, 0x8c, 0x72, 0xc0, 0x32, 0x73, 0x63, 0x08, 0x3c, 0x2d, 0x07, 0x4a,
+	0x26, 0x59, 0x07, 0xe8, 0xbb, 0x95, 0x1b, 0x47, 0xe9, 0x0c, 0x8e, 0x60, 0x5c, 0xb7, 0x60, 0xc2,
+	0xed, 0xda, 0xcc, 0xcb, 0x4d, 0xe0, 0x8a, 0xad, 0x24, 0x38, 0xa5, 0x4b, 0x2d, 0xfa, 0x09, 0xa4,
+	0x02, 0x12, 0x8f, 0x6c, 0xc1, 0x94, 0x5c, 0x96, 0xc8, 0x92, 0x07, 0x01, 0x7c, 0x1d, 0xfa, 0x06,
+	0x52, 0x7b, 0x8e, 0xcb, 0x4a, 0x6d, 0x8f, 0x1b, 0xed, 0x3a, 0x23, 0xb7, 0x61, 0xd6, 0x52, 0xff,
+	0x57, 0x07, 0x3d, 0x06, 0x5f, 0x52, 0x32, 0xc9, 0x36, 0x4c, 0xca, 0x03, 0x8e, 0x9e, 0xcf, 0xde,
+	0x5f, 0xf4, 0xad, 0xfc, 0x1c, 0x47, 0x8f, 0xb9, 0xc1, 0xbb, 0xde, 0xee, 0x84, 0xd8, 0xa1, 0x23,
+	0xba, 0x52, 0xa5, 0x8f, 0x61, 0x2e, 0x68, 0xcc, 0x23, 0x9b, 0xe1, 0xdd, 0xd9, 0x03, 0x09, 0x6a,
+	0xf9, 0xdb, 0xf3, 0x9f, 0xe3, 0x30, 0xf9, 0x12, 0xc5, 0xe4, 0x3a, 0x4c, 0x9d, 0x31, 0xd7, 0xb3,
+	0x9c, 0x76, 0x98, 0xa0, 0x3f, 0x4a, 0x1e, 0xc2, 0xb4, 0x4a, 0x11, 0xfe, 0xf1, 0x5b, 0xf0, 0xa1,
+	0x77, 0xe4, 0x78, 0xf0, 0xf0, 0xf4, 0x74, 0xe3, 0x4e, 0xef, 0xd8, 0xff, 0x7e, 0x7a, 0xc7, 0xaf,
+	0x7a, 0x7a, 0xc9, 0xa7, 0x90, 0x52, 0xfb, 0x46, 0xec, 0x0d, 0x7f, 0x0b, 0x90, 0xf0, 0x4c, 0xb1,
+	0x4b, 0x82, 0xb3, 0x67, 0xcd, 0xde, 0xb0, 0x47, 0xf6, 0x60, 0x4e, 0x21, 0x34, 0x31, 0x01, 0xe4,
+	0x26, 0x13, 0xcf, 0x7d, 0x10, 0x43, 0x99, 0x55, 0x49, 0x63, 0x0f, 0xe6, 0xe4, 0x0e, 0xf5, 0x77,
+	0xd2, 0x54, 0xe2, 0x4e, 0x0a, 0x81, 0xb0, 0xe0, 0x46, 0xfc, 0x25, 0x64, 0xfa, 0x89, 0xd6, 0xe0,
+	0x46, 0xcd, 0xf0, 0x58, 0x6e, 0x4d, 0x01, 0x09, 0x49, 0xe1, 0xc8, 0xaa, 0x49, 0x3a, 0xfb, 0x06,
+	0x37, 0x76, 0xd3, 0x02, 0x68, 0x36, 0x70, 0x70, 0xf4, 0x05, 0xa1, 0x25, 0x94, 0xd4, 0x6c, 0xf2,
+	0x0a, 0xb2, 0xc1, 0xd4, 0xec, 0x83, 0xae, 0xab, 0x25, 0x42, 0xd0, 0x1d, 0x21, 0xbb, 0x10, 0x16,
+	0x69, 0x49, 0x35, 0x85, 0x40, 0xff, 0xa6, 0x41, 0xfa, 0x98, 0xd9, 0x8d, 0x17, 0xcc, 0xe3, 0x3a,
+	0xf3, 0x3a, 0x4e, 0xdb, 0x63, 0xe4, 0x67, 0x30, 0xe9, 0x32, 0xaf, 0x6b, 0x73, 0x95, 0x5e, 0xee,
+	0xf8, 0xee, 0x0f, 0x6a, 0x06, 0x07, 0xba, 0x36, 0xd7, 0xd5, 0x34, 0x5a, 0x81, 0xf9, 0xb0, 0x84,
+	0xcc, 0xc2, 0xd4, 0xf1, 0xc9, 0xde, 0xde, 0xc1, 0xf1, 0x71, 0x7a, 0x44, 0x7c, 0x3c, 0xd9, 0x29,
+	0x3d, 0x3b, 0xd1, 0x0f, 0xd2, 0x1a, 0xc9, 0xc0, 0xdc, 0xf3, 0xf2, 0x8b, 0xea, 0xf1, 0x49, 0xa5,
+	0x52, 0xd6, 0x5f, 0x1c, 0xec, 0xa7, 0x47, 0xc5, 0xd0, 0xc9, 0xf3, 0xa7, 0xcf, 0xcb, 0xaf, 0x9e,
+	0x57, 0x0f, 0x74, 0xbd, 0xac, 0xa7, 0xc7, 0x68, 0x19, 0x32, 0xe5, 0xc6, 0x4e, 0x93, 0xb5, 0xf9,
+	0x71, 0xb7, 0xe6, 0xd5, 0x5d, 0xab, 0xc6, 0x5c, 0x91, 0x4f, 0x9c, 0x86, 0x21, 0x06, 0x7b, 0x27,
+	0x56, 0x9f, 0x51, 0x23, 0x25, 0x53, 0xe4, 0x22, 0x75, 0xbb, 0x59, 0xa6, 0x4a, 0x72, 0xd3, 0x72,
+	0xa0, 0x64, 0xd2, 0xc7, 0x00, 0x47, 0xac, 0x55, 0x63, 0xae, 0x77, 0x6a, 0x75, 0x04, 0x12, 0xee,
+	0x9a, 0x6a, 0xdb, 0x68, 0x31, 0x1f, 0x09, 0x47, 0x9e, 0x1b, 0x2d, 0x91, 0xf1, 0x47, 0x7b, 0x10,
+	0xa3, 0x96, 0x49, 0x0f, 0x20, 0xf5, 0xc4, 0x76, 0xde, 0x1e, 0x31, 0x6e, 0x88, 0xb5, 0x20, 0x1f,
+	0xc3, 0x64, 0x8b, 0x05, 0x32, 0xcf, 0x7a, 0x21, 0x78, 0x15, 0x3b, 0x8d, 0x4e, 0x15, 0xc5, 0x55,
+	0x99, 0xf2, 0x75, 0xa5, 0x7c, 0xff, 0xdb, 0x2d, 0x98, 0x93, 0x07, 0xfb, 0x98, 0xb9, 0x62, 0x91,
+	0xc8, 0x2b, 0x98, 0x3b, 0x64, 0x3c, 0x40, 0x6c, 0xb9, 0x20, 0xcb, 0x95, 0x82, 0x5f, 0xae, 0x14,
+	0x0e, 0x44, 0xb9, 0x92, 0xef, 0x9d, 0x8c, 0xbe, 0x2e, 0xcd, 0x7f, 0xf9, 0xed, 0xbf, 0xbf, 0x1e,
+	0x5d, 0x24, 0x04, 0x2b, 0x9f, 0xb3, 0x7b, 0xc5, 0x56, 0x1f, 0xe7, 0x35, 0xa4, 0x4f, 0x3a, 0xa6,
+	0xc1, 0x59, 0x00, 0x3b, 0x06, 0x23, 0x9f, 0x60, 0x8f, 0xae, 0x23, 0xf6, 0x0a, 0x8d, 0xc1, 0x7e,
+	0xa4, 0x6d, 0x92, 0x7d, 0x98, 0x39, 0x64, 0x5c, 0x25, 0xa9, 0x24, 0xce, 0xbd, 0x3c, 0x20, 0xf5,
+	0xe8, 0x02, 0x62, 0xce, 0x90, 0x29, 0x85, 0x49, 0x5e, 0x43, 0xe6, 0x99, 0xe5, 0xf1, 0x70, 0xa6,
+	0x4c, 0x42, 0x5b, 0x8a, 0x4b, 0x99, 0x1e, 0xbd, 0x86, 0xa0, 0x59, 0x92, 0xf1, 0x89, 0x5a, 0x3d,
+	0xa4, 0x63, 0x58, 0x38, 0x64, 0x21, 0x74, 0x02, 0x05, 0x55, 0xc8, 0x95, 0xf6, 0xf3, 0xb1, 0x39,
+	0x98, 0xbe, 0x87, 0x78, 0x39, 0xb2, 0x1c, 0xc1, 0x2b, 0xbe, 0xb3, 0xcc, 0x2f, 0x88, 0x0e, 0x29,
+	0xc1, 0x79, 0xc7, 0x4f, 0xa4, 0x49, 0x74, 0xd3, 0x03, 0x69, 0xd8, 0xa3, 0x39, 0x44, 0x26, 0x24,
+	0xed, 0x23, 0xf7, 0x92, 0x31, 0x03, 0x22, 0x30, 0x9f, 0x85, 0xf3, 0x6a, 0x12, 0xf2, 0x72, 0x6c,
+	0x86, 0xf6, 0xe8, 0x75, 0xc4, 0xbf, 0x46, 0x56, 0x7c, 0xfc, 0x81, 0x04, 0x4f, 0x7e, 0x0b, 0xe9,
+	0x43, 0x16, 0xb6, 0x12, 0x0a, 0x48, 0x7c, 0xea, 0xa7, 0xb7, 0x10, 0xf7, 0x3d, 0xb2, 0x96, 0x80,
+	0x2b, 0xe3, 0xd2, 0x80, 0xe5, 0x88, 0x0f, 0x15, 0xc7, 0xe5, 0x5e, 0x7c, 0xcc, 0x95, 0x1e, 0x6a,
+	0xd0, 0x4d, 0xb4, 0x70, 0x8b, 0xd0, 0x8b, 0x2c, 0x14, 0x3b, 0x88, 0xf6, 0x39, 0x2c, 0x0e, 0x3a,
+	0x21, 0x40, 0xc8, 0x52, 0x0c, 0x72, 0xc9, 0xcc, 0x67, 0x63, 0x86, 0xe9, 0x03, 0xb4, 0x57, 0x20,
+	0x1f, 0x5d, 0x6e, 0xaf, 0xf8, 0x4e, 0xfc, 0xa9, 0x0a, 0x0f, 0xff, 0xa8, 0xc1, 0xca, 0x01, 0x56,
+	0x3d, 0x57, 0xb6, 0x9e, 0x74, 0xba, 0x1e, 0x23, 0x81, 0x8f, 0xe9, 0xf6, 0x30, 0x04, 0x8a, 0xaa,
+	0xe4, 0xfa, 0x4a, 0x83, 0xdc, 0xbe, 0xe5, 0xfd, 0x20, 0x44, 0x7e, 0x8a, 0x44, 0x1e, 0xd2, 0x07,
+	0x43, 0x11, 0x31, 0xa5, 0x75, 0x62, 0xc6, 0xac, 0xb9, 0xc8, 0x93, 0xe1, 0x35, 0x27, 0xa1, 0xe4,
+	0x88, 0xf2, 0x2b, 0xae, 0x78, 0x03, 0xb1, 0x7e, 0xaf, 0xc1, 0x9a, 0xcc, 0x65, 0x11, 0x43, 0x2f,
+	0x90, 0xc6, 0x5a, 0xc4, 0x00, 0x8e, 0xcb, 0x39, 0x89, 0xae, 0x6f, 0x21, 0x85, 0x3b, 0xf4, 0x0a,
+	0x14, 0x44, 0xc6, 0xfb, 0x83, 0x06, 0xeb, 0x31, 0x2c, 0x8e, 0x44, 0x66, 0x97, 0x34, 0x56, 0x43,
+	0x34, 0x50, 0x70, 0xe4, 0x98, 0x97, 0xb0, 0x28, 0x20, 0x8b, 0x0d, 0xfa, 0xfe, 0x85, 0x2c, 0xe4,
+	0xfd, 0x21, 0x68, 0x34, 0x61, 0x25, 0x12, 0x72, 0x34, 0x15, 0x8e, 0x79, 0x36, 0xca, 0xc5, 0xa3,
+	0x1f, 0xa2, 0xad, 0x0f, 0xc8, 0x55, 0x6c, 0x11, 0x0e, 0xab, 0xb1, 0x6b, 0xab, 0x0a, 0xa7, 0xa0,
+	0xb1, 0x95, 0x48, 0xfc, 0xa5, 0x12, 0xbd, 0x8b, 0x06, 0x37, 0xc9, 0xc6, 0xa5, 0x21, 0x56, 0x35,
+	0x1c, 0xf9, 0x5a, 0x83, 0x9b, 0x09, 0x6b, 0x8d, 0x98, 0x32, 0xd2, 0x37, 0xe3, 0x0d, 0x5e, 0x65,
+	0xd5, 0xb7, 0x91, 0xd2, 0x16, 0xbd, 0x32, 0x25, 0x11, 0xf4, 0x32, 0xcc, 0x8a, 0x58, 0x5c, 0x96,
+	0x98, 0x17, 0xc2, 0xa5, 0xa7, 0x47, 0x57, 0xd0, 0x58, 0x86, 0x2c, 0xf8, 0xc6, 0xfc, 0x4c, 0x5c,
+	0x86, 0xb9, 0x3e, 0x60, 0xc9, 0x4c, 0x86, 0x9c, 0xed, 0x87, 0x39, 0xe6, 0xaa, 0x93, 0x70, 0x96,
+	0xe9, 0x91, 0x13, 0x48, 0xeb, 0xac, 0xee, 0xb4, 0xeb, 0x96, 0xcd, 0x7c, 0x9a, 0xc1, 0xb9, 0x89,
+	0xf1, 0x58, 0x43, 0xcc, 0x65, 0x1a, 0xc5, 0x14, 0x8e, 0x1f, 0xe0, 0x35, 0x1f, 0x73, 0x55, 0x0c,
+	0x94, 0xf8, 0x3e, 0x0c, 0x59, 0x1c, 0xf0, 0x54, 0xde, 0x0d, 0xbf, 0x80, 0xd4, 0x9e, 0xcb, 0x0c,
+	0xae, 0xa8, 0x91, 0x81, 0xd9, 0x11, 0x34, 0x55, 0xd8, 0xd0, 0xc1, 0xb8, 0x09, 0x4a, 0xaf, 0x20,
+	0x25, 0x93, 0x70, 0x0c, 0xab, 0x24, 0x27, 0xdf, 0x47, 0xbc, 0x75, 0xba, 0x1a, 0xc7, 0xce, 0x4f,
+	0xab, 0xbf, 0x86, 0x39, 0x95, 0x55, 0x87, 0x40, 0x56, 0x77, 0x23, 0x5d, 0x8b, 0x45, 0xf6, 0xf3,
+	0xe4, 0x2b, 0x48, 0xe9, 0xac, 0xe6, 0x38, 0xfc, 0x07, 0xe3, 0xec, 0x22, 0x9c, 0x00, 0xde, 0x67,
+	0x36, 0xe3, 0xdf, 0x23, 0x18, 0x9b, 0xf1, 0xc0, 0x26, 0xc2, 0x91, 0x2e, 0xcc, 0xed, 0x3b, 0x6f,
+	0xdb, 0xb6, 0x63, 0x98, 0xa5, 0x96, 0xd1, 0x64, 0xfd, 0x7b, 0x05, 0x3f, 0x7d, 0x59, 0x7e, 0xc9,
+	0x37, 0x58, 0xee, 0x30, 0x17, 0xdb, 0x6e, 0xe2, 0xa9, 0x40, 0x1f, 0xa2, 0x8d, 0xbb, 0xf4, 0xc3,
+	0x58, 0x1b, 0x96, 0x80, 0xa8, 0x9a, 0x0a, 0xc3, 0x2b, 0xbe, 0x13, 0x45, 0xf8, 0x17, 0x62, 0x71,
+	0xbf, 0xd4, 0x60, 0xf9, 0x90, 0xf1, 0x90, 0x0d, 0xf9, 0xc0, 0x4e, 0x26, 0x10, 0x37, 0x4c, 0x1f,
+	0x21, 0x81, 0x07, 0xe4, 0xfe, 0x10, 0x04, 0x8a, 0x9e, 0xb4, 0xd4, 0xc5, 0x32, 0x29, 0x84, 0x37,
+	0xa4, 0x75, 0x95, 0x64, 0xc8, 0x30, 0xee, 0x93, 0x86, 0x2c, 0x02, 0x43, 0x48, 0xde, 0xc0, 0x8a,
+	0xc6, 0x59, 0xf3, 0xe8, 0x47, 0x68, 0xee, 0x36, 0xb9, 0x75, 0x15, 0x73, 0xe4, 0x73, 0xc8, 0xee,
+	0x89, 0x7a, 0xd6, 0xbe, 0xa2, 0x87, 0xb1, 0x0b, 0xac, 0x3c, 0xdc, 0x1c, 0xca, 0xc3, 0x3f, 0x6b,
+	0x90, 0xdd, 0xa9, 0x73, 0xeb, 0xcc, 0xe0, 0x0c, 0xad, 0xc8, 0x5c, 0x3d, 0xa4, 0xe9, 0x3d, 0x34,
+	0xfd, 0x09, 0xfd, 0xf1, 0x30, 0x4b, 0x2b, 0x87, 0xbb, 0x68, 0x4f, 0x6c, 0xb4, 0x3f, 0x69, 0x90,
+	0xd1, 0xd9, 0x19, 0x73, 0xf9, 0xff, 0x85, 0x88, 0x8b, 0xa6, 0x05, 0x91, 0x0a, 0x2c, 0xf4, 0x6f,
+	0x82, 0x68, 0xbd, 0x3c, 0xe7, 0x33, 0x92, 0x85, 0x32, 0x45, 0x93, 0x6b, 0x24, 0x1f, 0x6b, 0x52,
+	0x16, 0xc8, 0xaf, 0x21, 0x1b, 0x40, 0x6c, 0xed, 0xe1, 0x13, 0x34, 0x8c, 0x9a, 0xe9, 0xa1, 0xfa,
+	0x62, 0x7a, 0x07, 0x91, 0x6f, 0x92, 0xeb, 0xf1, 0xc8, 0x2d, 0xf5, 0x94, 0xf5, 0x48, 0x1b, 0x96,
+	0x64, 0xb4, 0x06, 0x0d, 0x44, 0x41, 0x13, 0x53, 0x90, 0xaa, 0xfe, 0xe8, 0x65, 0xc6, 0x44, 0x80,
+	0x4e, 0x82, 0x01, 0xba, 0x5a, 0x71, 0x79, 0x71, 0x94, 0x64, 0x51, 0xc9, 0x60, 0x31, 0x0c, 0x3b,
+	0x4c, 0x5d, 0xb3, 0x81, 0x06, 0x28, 0xb9, 0x91, 0x68, 0xc0, 0xaf, 0x67, 0x3e, 0x0b, 0xb2, 0x97,
+	0x7d, 0xab, 0xa4, 0xab, 0x3e, 0x1b, 0xed, 0x7d, 0x79, 0x49, 0xf7, 0xaa, 0x6c, 0x9a, 0x11, 0x1d,
+	0xbb, 0x07, 0x7d, 0xfd, 0x81, 0xc8, 0x44, 0xf0, 0xe8, 0x4d, 0x84, 0x5b, 0x25, 0xd7, 0xe2, 0xe0,
+	0xe4, 0x5d, 0x5d, 0x85, 0x74, 0x9f, 0xb1, 0x0a, 0x4a, 0x12, 0xe5, 0xc5, 0x98, 0x5e, 0x9b, 0xe7,
+	0xb7, 0x0e, 0xc8, 0xd2, 0x80, 0x11, 0x15, 0x92, 0x27, 0x90, 0x3e, 0xe6, 0x2e, 0x33, 0x5a, 0x15,
+	0xa3, 0xfe, 0x86, 0x71, 0xaf, 0xdc, 0xe5, 0x64, 0x39, 0x14, 0x69, 0x29, 0x28, 0x77, 0x79, 0xe2,
+	0x06, 0x1a, 0xd9, 0xd0, 0xc8, 0x01, 0x96, 0x3c, 0xcc, 0x3a, 0x63, 0x0a, 0xa8, 0xd4, 0xbe, 0xa0,
+	0x77, 0x10, 0xc5, 0x2f, 0xb5, 0xe9, 0xc8, 0x5d, 0x8d, 0x3c, 0x85, 0xac, 0x82, 0xd9, 0x3b, 0x35,
+	0xda, 0x4d, 0x86, 0x1d, 0xbf, 0x64, 0x97, 0x73, 0x21, 0xa4, 0xc0, 0x14, 0x04, 0x3b, 0x81, 0xf9,
+	0xde, 0x82, 0xc8, 0x1f, 0x4f, 0xc2, 0x45, 0x79, 0x34, 0x5c, 0x49, 0x9b, 0x55, 0x45, 0xcb, 0x5f,
+	0x93, 0x8c, 0xac, 0x9f, 0x82, 0x8d, 0xfa, 0xb8, 0x1e, 0x65, 0x3e, 0x6e, 0x90, 0xde, 0x40, 0x13,
+	0x79, 0xda, 0x5b, 0x90, 0x50, 0xcb, 0x53, 0x1c, 0xb2, 0x97, 0xc8, 0x3b, 0x88, 0x1e, 0xfb, 0x68,
+	0x0f, 0xb6, 0xdf, 0xa3, 0xc4, 0x43, 0xa8, 0x92, 0xb8, 0x09, 0x19, 0x99, 0x2c, 0xbe, 0x1f, 0xf1,
+	0x0f, 0xd0, 0xc4, 0xf5, 0xfc, 0x05, 0x26, 0x04, 0x7b, 0x13, 0x32, 0xb2, 0x0a, 0xba, 0xd4, 0x4a,
+	0xd2, 0x7e, 0x52, 0xbe, 0x6c, 0x5e, 0xe4, 0x8b, 0x3a, 0x18, 0xa1, 0x9f, 0x20, 0x2e, 0x3d, 0x18,
+	0xa1, 0x88, 0x45, 0x0e, 0x46, 0xc8, 0x0a, 0x79, 0x86, 0xc5, 0x36, 0x5e, 0x3d, 0x5e, 0x7c, 0xb1,
+	0x2d, 0x65, 0x7e, 0x05, 0x47, 0x56, 0x93, 0x2f, 0x1e, 0x8f, 0xfc, 0x0a, 0xa6, 0xfd, 0x96, 0x6c,
+	0x08, 0x2c, 0x97, 0xd4, 0xdb, 0xa5, 0xb7, 0x11, 0xf6, 0x06, 0x7d, 0x2f, 0x16, 0xd6, 0x63, 0x76,
+	0xa3, 0xca, 0x05, 0xda, 0x4b, 0xac, 0x8f, 0x42, 0x2d, 0xed, 0xc1, 0xb7, 0x67, 0xa4, 0xe7, 0x1d,
+	0xcd, 0x3c, 0xe2, 0x18, 0x09, 0x3d, 0xf5, 0xe8, 0xb4, 0x6a, 0xe4, 0x33, 0x20, 0x87, 0x8c, 0x0f,
+	0x74, 0xb5, 0x07, 0x1a, 0x54, 0x71, 0x8d, 0xef, 0x68, 0x3c, 0xc2, 0xd8, 0xd8, 0x43, 0x27, 0x1e,
+	0xcc, 0x1d, 0x5b, 0xad, 0xae, 0x6d, 0x70, 0x86, 0xf3, 0xc9, 0x5a, 0x2f, 0x10, 0xc1, 0x61, 0x9d,
+	0xfd, 0xae, 0xcb, 0x3c, 0x9e, 0x74, 0xe7, 0x47, 0x9a, 0x06, 0xe1, 0x18, 0x29, 0xa4, 0xaa, 0x40,
+	0x12, 0x3b, 0x73, 0x0f, 0x66, 0x7a, 0xed, 0x6b, 0x72, 0xcd, 0x37, 0x18, 0x69, 0x6c, 0xe7, 0x93,
+	0x45, 0x74, 0x84, 0x1c, 0x01, 0xc8, 0x17, 0x0f, 0x36, 0x78, 0x52, 0xc1, 0x8a, 0x20, 0x71, 0x43,
+	0xab, 0xa7, 0x22, 0x9d, 0x17, 0x1c, 0xfb, 0xb3, 0xd5, 0x63, 0x56, 0xbd, 0x73, 0x86, 0xc0, 0xeb,
+	0xbf, 0xc8, 0xce, 0xee, 0x15, 0x03, 0xd3, 0x1f, 0x69, 0x9b, 0xbb, 0x36, 0x64, 0x1d, 0xb7, 0x89,
+	0x79, 0xb1, 0xee, 0xb8, 0xa6, 0xc2, 0xdb, 0x4d, 0xc9, 0xae, 0x6f, 0x05, 0x7f, 0x68, 0xfe, 0x4d,
+	0xa1, 0x69, 0xf1, 0xd3, 0x6e, 0x4d, 0x44, 0xb5, 0xe8, 0x6b, 0xaa, 0x5f, 0xf3, 0xb7, 0xfc, 0xdf,
+	0xf6, 0xb7, 0x8b, 0x4d, 0x47, 0x8d, 0xfd, 0x63, 0x74, 0xb9, 0xec, 0xe3, 0xbd, 0x0c, 0x36, 0x91,
+	0x2b, 0xa3, 0x95, 0xb1, 0xca, 0x78, 0x65, 0xa2, 0x32, 0x59, 0x99, 0xaa, 0x4c, 0xd7, 0x26, 0x71,
+	0xee, 0xf6, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x07, 0xe5, 0x3e, 0x27, 0x20, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -2185,9 +2155,6 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type VolthaServiceClient interface {
-	// Get more information on a given physical device
-	UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error)
 	// Get the membership group of a Voltha Core
 	GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error)
 	// Set the membership group of a Voltha Core
@@ -2324,24 +2291,6 @@
 	return &volthaServiceClient{cc}
 }
 
-func (c *volthaServiceClient) UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogLevel", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error) {
-	out := new(common.Loggings)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogLevels", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 func (c *volthaServiceClient) GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error) {
 	out := new(Membership)
 	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMembership", in, out, opts...)
@@ -2946,9 +2895,6 @@
 
 // VolthaServiceServer is the server API for VolthaService service.
 type VolthaServiceServer interface {
-	// Get more information on a given physical device
-	UpdateLogLevel(context.Context, *common.Logging) (*empty.Empty, error)
-	GetLogLevels(context.Context, *common.LoggingComponent) (*common.Loggings, error)
 	// Get the membership group of a Voltha Core
 	GetMembership(context.Context, *empty.Empty) (*Membership, error)
 	// Set the membership group of a Voltha Core
@@ -3081,42 +3027,6 @@
 	s.RegisterService(&_VolthaService_serviceDesc, srv)
 }
 
-func _VolthaService_UpdateLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Logging)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogLevel(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogLevel",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogLevel(ctx, req.(*common.Logging))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogLevels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.LoggingComponent)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogLevels(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogLevels",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogLevels(ctx, req.(*common.LoggingComponent))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 func _VolthaService_GetMembership_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(empty.Empty)
 	if err := dec(in); err != nil {
@@ -4198,14 +4108,6 @@
 	HandlerType: (*VolthaServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
-			MethodName: "UpdateLogLevel",
-			Handler:    _VolthaService_UpdateLogLevel_Handler,
-		},
-		{
-			MethodName: "GetLogLevels",
-			Handler:    _VolthaService_GetLogLevels_Handler,
-		},
-		{
 			MethodName: "GetMembership",
 			Handler:    _VolthaService_GetMembership_Handler,
 		},
diff --git a/vendor/modules.txt b/vendor/modules.txt
index ebf9c95..d5d84a2 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -100,6 +100,7 @@
 github.com/opencord/voltha-lib-go/v3/pkg/adapters
 github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif
 github.com/opencord/voltha-lib-go/v3/pkg/adapters/common
+github.com/opencord/voltha-lib-go/v3/pkg/config
 github.com/opencord/voltha-lib-go/v3/pkg/db
 github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore
 github.com/opencord/voltha-lib-go/v3/pkg/flows
@@ -109,7 +110,7 @@
 github.com/opencord/voltha-lib-go/v3/pkg/mocks
 github.com/opencord/voltha-lib-go/v3/pkg/probe
 github.com/opencord/voltha-lib-go/v3/pkg/version
-# github.com/opencord/voltha-protos/v3 v3.2.3
+# github.com/opencord/voltha-protos/v3 v3.2.6
 github.com/opencord/voltha-protos/v3/go/common
 github.com/opencord/voltha-protos/v3/go/inter_container
 github.com/opencord/voltha-protos/v3/go/omci