go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/id/platformid/manager.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package platformid
     5  
     6  import (
     7  	"go.mondoo.com/cnquery/providers-sdk/v1/inventory"
     8  	"go.mondoo.com/cnquery/providers/os/connection/shared"
     9  )
    10  
    11  type UniquePlatformIDProvider interface {
    12  	Name() string
    13  	ID() (string, error)
    14  }
    15  
    16  func MachineIDProvider(conn shared.Connection, platform *inventory.Platform) (UniquePlatformIDProvider, error) {
    17  	var uuidProvider UniquePlatformIDProvider
    18  	for i := range platform.Family {
    19  		if platform.Family[i] == "linux" {
    20  			uuidProvider = &LinuxIdProvider{connection: conn}
    21  		}
    22  	}
    23  
    24  	if uuidProvider == nil && platform.Name == "macos" {
    25  		uuidProvider = &MacOSIdProvider{connection: conn}
    26  	} else if uuidProvider == nil && platform.Name == "windows" {
    27  		uuidProvider = &WinIdProvider{connection: conn}
    28  	}
    29  
    30  	return uuidProvider, nil
    31  }