client/lxd_images.go
func (r *ProtocolLXD) GetPrivateImageFile(fingerprint string, secret string, req ImageFileRequest) (*ImageFileResponse, error) {
	// Sanity checks
	if req.MetaFile == nil && req.RootfsFile == nil {
		return nil, fmt.Errorf("No file requested")
	}

	uri := fmt.Sprintf("/1.0/images/%s/export", url.QueryEscape(fingerprint))

	var err error
	uri, err = r.setQueryAttributes(uri)
	if err != nil {
		return nil, err
	}

	// Attempt to download from host
	if secret == "" && shared.PathExists("/dev/lxd/sock") && os.Geteuid() == 0 {
		unixURI := fmt.Sprintf("http://unix.socket%s", uri)

		// Setup the HTTP client
		devlxdHTTP, err := unixHTTPClient(nil, "/dev/lxd/sock")
		if err == nil {
			resp, err := lxdDownloadImage(fingerprint, unixURI, r.httpUserAgent, devlxdHTTP, req)
			if err == nil {
				return resp, nil
			}
		}
	}

	// Build the URL
	uri = fmt.Sprintf("%s%s", r.httpHost, uri)
	if secret != "" {
		uri, err = setQueryParam(uri, "secret", secret)
		if err != nil {
			return nil, err
		}
	}

	return lxdDownloadImage(fingerprint, uri, r.httpUserAgent, r.http, req)
}
func (r *ProtocolLXD) GetPrivateImageFile(fingerprint string, secret string, req ImageFileRequest) (*ImageFileResponse, error) {
	// Sanity checks
	if req.MetaFile == nil && req.RootfsFile == nil {
		return nil, fmt.Errorf("No file requested")
	}

	uri := fmt.Sprintf("/1.0/images/%s/export", url.QueryEscape(fingerprint))

	var err error
	uri, err = r.setQueryAttributes(uri)
	if err != nil {
		return nil, err
	}

	// Attempt to download from host
	if secret == "" && shared.PathExists("/dev/lxd/sock") && os.Geteuid() == 0 {
		unixURI := fmt.Sprintf("http://unix.socket%s", uri)

		// Setup the HTTP client
		devlxdHTTP, err := unixHTTPClient(nil, "/dev/lxd/sock")
		if err == nil {
			resp, err := lxdDownloadImage(fingerprint, unixURI, r.httpUserAgent, devlxdHTTP, req)
			if err == nil {
				return resp, nil
			}
		}
	}

	// Build the URL
	uri = fmt.Sprintf("%s%s", r.httpHost, uri)
	if secret != "" {
		uri, err = setQueryParam(uri, "secret", secret)
		if err != nil {
			return nil, err
		}
	}

	return lxdDownloadImage(fingerprint, uri, r.httpUserAgent, r.http, req)
}
func ( r * ProtocolLXD ) GetPrivateImageFile ( fingerprint string , secret string , req ImageFileRequest ) ( * ImageFileResponse , error ) { // Sanity checks if req . MetaFile == nil && req . RootfsFile == nil { return nil , fmt . Errorf ( " " ) } uri := fmt . Sprintf ( " " , url . QueryEscape ( fingerprint ) ) var err error uri , err = r . setQueryAttributes ( uri ) if err != nil { return nil , err } // Attempt to download from host if secret == " " && shared . PathExists ( " " ) && os . Geteuid ( ) == 0 { unixURI := fmt . Sprintf ( " " , uri ) // Setup the HTTP client devlxdHTTP , err := unixHTTPClient ( nil , " " ) if err == nil { resp , err := lxdDownloadImage ( fingerprint , unixURI , r . httpUserAgent , devlxdHTTP , req ) if err == nil { return resp , nil } } } // Build the URL uri = fmt . Sprintf ( " " , r . httpHost , uri ) if secret != " " { uri , err = setQueryParam ( uri , " " , secret ) if err != nil { return nil , err } } return lxdDownloadImage ( fingerprint , uri , r . httpUserAgent , r . http , req ) }
// GetPrivateImageFile is similar to GetImageFile but allows passing a secret download token
GetPrivateImageFile is similar to GetImageFile but allows passing a secret download token