mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
package docker
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
)
 | 
						|
 | 
						|
var portainerContainerId string
 | 
						|
 | 
						|
func init() {
 | 
						|
	// use hostname as the current  portainer id
 | 
						|
	// Reference issue: JIRA EE-917
 | 
						|
	// https://social.msdn.microsoft.com/Forums/en-US/5e5bff27-7511-4fb2-9ffa-207520d0ffb8/how-to-gain-windows-container-id-in-windows-container?forum=windowscontainers
 | 
						|
	// Because Windows container cannot obtain container ID from /proc/self/cgroups like linux container,
 | 
						|
	// as a workaround, we currently use hostname as container ID.
 | 
						|
	portainerContainerId, _ = os.Hostname()
 | 
						|
}
 | 
						|
 | 
						|
func (transport *Transport) applyPortainerContainers(resources []interface{}) ([]interface{}, error) {
 | 
						|
	decoratedResourceData := make([]interface{}, 0)
 | 
						|
	for _, resource := range resources {
 | 
						|
		responseObject, ok := resource.(map[string]interface{})
 | 
						|
		if !ok {
 | 
						|
			decoratedResourceData = append(decoratedResourceData, resource)
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		responseObject, _ = transport.applyPortainerContainer(responseObject)
 | 
						|
 | 
						|
		decoratedResourceData = append(decoratedResourceData, responseObject)
 | 
						|
	}
 | 
						|
	return decoratedResourceData, nil
 | 
						|
}
 | 
						|
 | 
						|
func (transport *Transport) applyPortainerContainer(resourceObject map[string]interface{}) (map[string]interface{}, error) {
 | 
						|
	resourceId, ok := resourceObject["Id"].(string)
 | 
						|
	if !ok {
 | 
						|
		return resourceObject, nil
 | 
						|
	}
 | 
						|
	if len(resourceId) >= 12 && resourceId[0:12] == portainerContainerId {
 | 
						|
		resourceObject["IsPortainer"] = true
 | 
						|
	}
 | 
						|
	return resourceObject, nil
 | 
						|
}
 |