Skip to content
Snippets Groups Projects
json_Helper.go 1.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • package nucleus
    
    import (
    	"encoding/json"
    	"github.com/google/uuid"
    )
    
    type PrincipalNetworkDomainMap map[uuid.UUID]PrincipalNetworkDomain
    
    func (m PrincipalNetworkDomainMap) UnmarshalJSON(b []byte) error {
    	data := make(map[string]json.RawMessage)
    	if err := json.Unmarshal(b, &data); err != nil {
    		return err
    	}
    
    	for k, v := range data {
    		dest := &pndImplementation{}
    		if err := json.Unmarshal(v, dest); err != nil {
    			return err
    		}
    		id, err := uuid.Parse(k)
    		if err != nil {
    			return err
    		}
    		m[id] = dest
    	}
    	return nil
    }
    
    type SouthboundInterfaceMap map[string]SouthboundInterface
    
    func (m *SouthboundInterfaceMap) UnmarshalJSON(b []byte) error {
    	m2 := make(map[string]SouthboundInterface)
    	data := make(map[string]interface{})
    	if err := json.Unmarshal(b, &data); err != nil {
    		return err
    	}
    
    	for k, v := range data {
    		m2[k] = getSouthboundInterfaceFromJSONMap(v.(map[string]interface{}))
    	}
    	*m = m2
    	return nil
    }
    
    func getSouthboundInterfaceFromJSONMap(m map[string]interface{}) SouthboundInterface {
    	var newSBI SouthboundInterface
    
    	switch sbi := m["name"]; sbi {
    	case "arista":
    
    		newSBI = &AristaOC{}
    
    		newSBI = &OpenConfig{}