service

package
v0.0.0-...-fa94ed0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ImageImportAction        = "ImageImport"
	ImageExportAction        = "ImageExport"
	InstanceImportAction     = "InstanceImport"
	MachineImageImportAction = "MachineImageImport"
	OneStepImageImportAction = "OneStepImageImport"
	WindowsUpgrade           = "WindowsUpgrade"
	InstanceExportAction     = "InstanceExport"
	MachineImageExportAction = "MachineImageExport"
)

constants used by logging

Variables

This section is empty.

Functions

func Hash

func Hash(s string) string

Hash a given string for obfuscation

func RunWithServerLogging

func RunWithServerLogging(action string, params InputParams, projectPointer *string,
	function func() (Loggable, error)) error

RunWithServerLogging runs the function with server logging

Types

type CommonParams

type CommonParams struct {
	ClientID                string `json:"client_id,omitempty"`
	ClientVersion           string `json:"client_version,omitempty"`
	Network                 string `json:"network,omitempty"`
	Subnet                  string `json:"subnet,omitempty"`
	Zone                    string `json:"zone,omitempty"`
	Timeout                 string `json:"timeout,omitempty"`
	Project                 string `json:"project,omitempty"`
	ObfuscatedProject       string `json:"obfuscated_project,omitempty"`
	Labels                  string `json:"labels,omitempty"`
	ScratchBucketGcsPath    string `json:"scratch_bucket_gcs_path,omitempty"`
	Oauth                   string `json:"oauth,omitempty"`
	ComputeEndpointOverride string `json:"compute_endpoint_override,omitempty"`
	DisableGcsLogging       bool   `json:"disable_gcs_logging"`
	DisableCloudLogging     bool   `json:"disable_cloud_logging"`
	DisableStdoutLogging    bool   `json:"disable_stdout_logging"`
}

CommonParams is only used to organize the code without impacting hierarchy of data

type ComputeImageToolsLogExtension

type ComputeImageToolsLogExtension struct {
	// This id is a random guid for correlation among multiple log lines of a single call
	ID            string       `json:"id"`
	CloudBuildID  string       `json:"cloud_build_id"`
	ToolAction    string       `json:"tool_action"`
	Status        string       `json:"status"`
	ElapsedTimeMs int64        `json:"elapsed_time_ms"`
	EventTimeMs   int64        `json:"event_time_ms"`
	InputParams   *InputParams `json:"input_params,omitempty"`
	OutputInfo    *OutputInfo  `json:"output_info,omitempty"`
}

ComputeImageToolsLogExtension contains all log info, which should be align with sawmill server side configuration.

type ImageExportParams

type ImageExportParams struct {
	*CommonParams

	DestinationURI        string `json:"destination_uri,omitempty"`
	SourceImage           string `json:"source_image,omitempty"`
	Format                string `json:"format,omitempty"`
	ComputeServiceAccount string `json:"compute_service_account,omitempty"`
	SourceDiskSnapshot    string `json:"source_disk_snapshot,omitempty"`
}

ImageExportParams contains all input params for image export

type ImageImportParams

type ImageImportParams struct {
	*CommonParams

	ImageName             string                `json:"image_name,omitempty"`
	DataDisk              bool                  `json:"data_disk"`
	OS                    string                `json:"os,omitempty"`
	SourceFile            string                `json:"source_file,omitempty"`
	SourceImage           string                `json:"source_image,omitempty"`
	NoGuestEnvironment    bool                  `json:"no_guest_environment"`
	Family                string                `json:"family,omitempty"`
	Description           string                `json:"description,omitempty"`
	NoExternalIP          bool                  `json:"no_external_ip"`
	HasKmsKey             bool                  `json:"has_kms_key"`
	HasKmsKeyring         bool                  `json:"has_kms_keyring"`
	HasKmsLocation        bool                  `json:"has_kms_location"`
	HasKmsProject         bool                  `json:"has_kms_project"`
	StorageLocation       string                `json:"storage_location,omitempty"`
	InspectionResults     *pb.InspectionResults `json:"inspection_results,omitempty"`
	ComputeServiceAccount string                `json:"compute_service_account,omitempty"`
}

ImageImportParams contains all input params for image import

type InputParams

type InputParams struct {
	ImageImportParams        *ImageImportParams        `json:"image_import_input_params,omitempty"`
	ImageExportParams        *ImageExportParams        `json:"image_export_input_params,omitempty"`
	InstanceImportParams     *InstanceImportParams     `json:"instance_import_input_params,omitempty"`
	MachineImageImportParams *MachineImageImportParams `json:"machine_image_import_input_params,omitempty"`
	WindowsUpgradeParams     *WindowsUpgradeParams     `json:"windows_upgrade_input_params,omitempty"`
	OnestepImageImportParams *OnestepImageImportParams `json:"onestep_image_import_input_params,omitempty"`
	InstanceExportParams     *InstanceExportParams     `json:"instance_export_input_params,omitempty"`
	MachineImageExportParams *MachineImageExportParams `json:"machine_image_export_input_params,omitempty"`
}

InputParams contains the union of all APIs' param info. To simplify logging service, we avoid defining different schemas for each API.

type InstanceExportParams

type InstanceExportParams struct {
	*CommonParams

	DestinationURI   string `json:"destination_uri,omitempty"`
	InstanceName     string `json:"instance_name,omitempty"`
	OvfFormat        string `json:"ovf_format,omitempty"`
	DiskExportFormat string `json:"disk_export_format,omitempty"`
	NoExternalIP     bool   `json:"no_external_ip,omitempty"`
	OS               string `json:"os,omitempty"`
}

InstanceExportParams contains all input params for instance export

type InstanceImportParams

type InstanceImportParams struct {
	*CommonParams

	InstanceName                string `json:"instance_name,omitempty"`
	OvfGcsPath                  string `json:"ovf_gcs_path,omitempty"`
	CanIPForward                bool   `json:"can_ip_forward"`
	DeletionProtection          bool   `json:"deletion_protection"`
	MachineType                 string `json:"machine_type,omitempty"`
	NetworkInterface            string `json:"network_interface,omitempty"`
	NetworkTier                 string `json:"network_tier,omitempty"`
	PrivateNetworkIP            string `json:"private_network_ip,omitempty"`
	NoExternalIP                bool   `json:"no_external_ip,omitempty"`
	NoRestartOnFailure          bool   `json:"no_restart_on_failure"`
	OS                          string `json:"os,omitempty"`
	ShieldedIntegrityMonitoring bool   `json:"shielded_integrity_monitoring"`
	ShieldedSecureBoot          bool   `json:"shielded_secure_boot"`
	ShieldedVtpm                bool   `json:"shielded_vtpm"`
	Tags                        string `json:"tags,omitempty"`
	HasBootDiskKmsKey           bool   `json:"has_boot_disk_kms_key"`
	HasBootDiskKmsKeyring       bool   `json:"has_boot_disk_kms_keyring"`
	HasBootDiskKmsLocation      bool   `json:"has_boot_disk_kms_location"`
	HasBootDiskKmsProject       bool   `json:"has_boot_disk_kms_project"`
	NoGuestEnvironment          bool   `json:"no_guest_environment"`
	NodeAffinityLabel           string `json:"node_affinity_label,omitempty"`
	ComputeServiceAccount       string `json:"compute_service_account,omitempty"`
}

InstanceImportParams contains all input params for instance import

type Loggable

type Loggable interface {
	GetValue(key string) string
	GetValueAsBool(key string) bool
	GetValueAsInt64Slice(key string) []int64
	GetInspectionResults() *pb.InspectionResults
	ReadSerialPortLogs() []string
}

Loggable contains fields relevant to import and export logging.

func NewOutputInfoLoggable

func NewOutputInfoLoggable(outputInfo *pb.OutputInfo) Loggable

NewOutputInfoLoggable returns a Loggable that is bacaked by a concrete instance of pb.OutputInfo. It's intended as a temporary shim while we transition tools to use the ToolLogger type.

type Logger

type Logger struct {
	ServerURL string
	ID        string
	Action    string
	TimeStart time.Time
	Params    InputParams
	// contains filtered or unexported fields
}

Logger is responsible for logging to firelog server

func NewLoggingServiceLogger

func NewLoggingServiceLogger(action string, params InputParams) *Logger

NewLoggingServiceLogger creates a new server logger

type MachineImageExportParams

type MachineImageExportParams struct {
	*CommonParams

	DestinationURI   string `json:"destination_uri,omitempty"`
	MachineImageName string `json:"machine_image_name,omitempty"`
	OvfFormat        string `json:"ovf_format,omitempty"`
	DiskExportFormat string `json:"disk_export_format,omitempty"`
	NoExternalIP     bool   `json:"no_external_ip,omitempty"`
	OS               string `json:"os,omitempty"`
}

MachineImageExportParams contains all input params for instance export

type MachineImageImportParams

type MachineImageImportParams struct {
	*CommonParams

	MachineImageName            string `json:"machine_image_name,omitempty"`
	OvfGcsPath                  string `json:"ovf_gcs_path,omitempty"`
	CanIPForward                bool   `json:"can_ip_forward"`
	DeletionProtection          bool   `json:"deletion_protection"`
	MachineType                 string `json:"machine_type,omitempty"`
	NetworkInterface            string `json:"network_interface,omitempty"`
	NetworkTier                 string `json:"network_tier,omitempty"`
	PrivateNetworkIP            string `json:"private_network_ip,omitempty"`
	NoExternalIP                bool   `json:"no_external_ip,omitempty"`
	NoRestartOnFailure          bool   `json:"no_restart_on_failure"`
	OS                          string `json:"os,omitempty"`
	ShieldedIntegrityMonitoring bool   `json:"shielded_integrity_monitoring"`
	ShieldedSecureBoot          bool   `json:"shielded_secure_boot"`
	ShieldedVtpm                bool   `json:"shielded_vtpm"`
	Tags                        string `json:"tags,omitempty"`
	HasBootDiskKmsKey           bool   `json:"has_boot_disk_kms_key"`
	HasBootDiskKmsKeyring       bool   `json:"has_boot_disk_kms_keyring"`
	HasBootDiskKmsLocation      bool   `json:"has_boot_disk_kms_location"`
	HasBootDiskKmsProject       bool   `json:"has_boot_disk_kms_project"`
	NoGuestEnvironment          bool   `json:"no_guest_environment"`
	NodeAffinityLabel           string `json:"node_affinity_label,omitempty"`
	Hostname                    string `json:"hostname,omitempty"`
	MachineImageStorageLocation string `json:"machine_image_storage_location,omitempty"`
	ComputeServiceAccount       string `json:"compute_service_account,omitempty"`
}

MachineImageImportParams contains all input params for machine image import

type OnestepImageImportParams

type OnestepImageImportParams struct {
	*CommonParams

	// Image import params
	ImageName             string `json:"image_name,omitempty"`
	OS                    string `json:"os,omitempty"`
	NoGuestEnvironment    bool   `json:"no_guest_environment"`
	Family                string `json:"family,omitempty"`
	Description           string `json:"description,omitempty"`
	NoExternalIP          bool   `json:"no_external_ip"`
	HasKmsKey             bool   `json:"has_kms_key"`
	HasKmsKeyring         bool   `json:"has_kms_keyring"`
	HasKmsLocation        bool   `json:"has_kms_location"`
	HasKmsProject         bool   `json:"has_kms_project"`
	StorageLocation       string `json:"storage_location,omitempty"`
	ComputeServiceAccount string `json:"compute_service_account,omitempty"`

	// AWS related params
	AWSAMIID             string `json:"aws_ami_id,omitempty"`
	AWSAMIExportLocation string `json:"aws_ami_export_location,omitempty"`
	AWSSourceAMIFilePath string `json:"aws_source_ami_file_path,omitempty"`
}

OnestepImageImportParams contains all input params for onestep image import

type OutputInfo

type OutputInfo struct {
	// Size of import/export sources (image or file)
	SourcesSizeGb []int64 `json:"sources_size_gb,omitempty"`
	// Size of import/export targets (image or file)
	TargetsSizeGb []int64 `json:"targets_size_gb,omitempty"`
	// Failure message of the command
	FailureMessage string `json:"failure_message,omitempty"`
	// Failure message of the command without privacy info
	FailureMessageWithoutPrivacyInfo string `json:"failure_message_without_privacy_info,omitempty"`
	// ImportFileFormat shows what is the actual image format of the imported file
	ImportFileFormat string `json:"import_file_format,omitempty"`
	// Serial output from worker instances; only populated
	// if workflow failed.
	SerialOutputs []string `json:"serial_outputs,omitempty"`
	// Inflation type (qemu, API, etc)
	InflationType string `json:"inflation_type,omitempty"`
	// Inflation time (seconds)
	InflationTime []int64 `json:"inflation_time_ms,omitempty"`
	// Inflation time (seconds) of the shadow disk
	ShadowInflationTime []int64 `json:"shadow_inflation_time_ms,omitempty"`
	// Shadow disk match result for shadow disk inflater
	ShadowDiskMatchResult string `json:"shadow_disk_match_result,omitempty"`
	// Indicates whether UEFI_COMPATIBLE was added to the image's guestOSFeatures, either due to inspection or user request
	IsUEFICompatibleImage bool `json:"is_uefi_compatible_image,omitempty"`
	// Indicates whether the image is auto-detected to be UEFI compatible
	IsUEFIDetected bool `json:"is_uefi_detected,omitempty"`
	// Inspection results. Ref to the def of `InspectionResults` for details
	InspectionResults *pb.InspectionResults `json:"inspection_results,omitempty"`
	// Inflation fallback reason
	InflationFallbackReason string `json:"inflation_fallback_reason,omitempty"`
}

OutputInfo contains output values from the tools execution

type OvfExportLoggableBuilder

type OvfExportLoggableBuilder struct {
	// contains filtered or unexported fields
}

OvfExportLoggableBuilder initializes and builds a Loggable with the metadata fields that are relevant when exporting OVF.

func NewOvfExportLoggableBuilder

func NewOvfExportLoggableBuilder() *OvfExportLoggableBuilder

NewOvfExportLoggableBuilder creates and initializes a OvfExportLoggableBuilder.

func (*OvfExportLoggableBuilder) AppendTraceLogs

func (b *OvfExportLoggableBuilder) AppendTraceLogs(traceLogs []string) *OvfExportLoggableBuilder

AppendTraceLogs sets trace logs during OVF export.

func (*OvfExportLoggableBuilder) Build

Build builds the actual Loggable object.

func (OvfExportLoggableBuilder) GetInspectionResults

func (w OvfExportLoggableBuilder) GetInspectionResults() *pb.InspectionResults

func (OvfExportLoggableBuilder) GetValue

func (w OvfExportLoggableBuilder) GetValue(key string) string

func (OvfExportLoggableBuilder) GetValueAsBool

func (w OvfExportLoggableBuilder) GetValueAsBool(key string) bool

func (OvfExportLoggableBuilder) GetValueAsInt64Slice

func (w OvfExportLoggableBuilder) GetValueAsInt64Slice(key string) []int64

func (OvfExportLoggableBuilder) ReadSerialPortLogs

func (w OvfExportLoggableBuilder) ReadSerialPortLogs() []string

func (*OvfExportLoggableBuilder) SetDiskSizes

func (b *OvfExportLoggableBuilder) SetDiskSizes(sourceSizes []int64,
	targetSizes []int64) *OvfExportLoggableBuilder

SetDiskSizes sets disk sizes for OVF exported disks

type SingleImageImportLoggableBuilder

type SingleImageImportLoggableBuilder struct {
	// contains filtered or unexported fields
}

SingleImageImportLoggableBuilder initializes and builds a Loggable with the metadata fields that are relevant when importing a single image.

func NewSingleImageImportLoggableBuilder

func NewSingleImageImportLoggableBuilder() *SingleImageImportLoggableBuilder

NewSingleImageImportLoggableBuilder creates and initializes a SingleImageImportLoggableBuilder.

func (*SingleImageImportLoggableBuilder) AppendTraceLogs

AppendTraceLogs sets trace logs during the import.

func (*SingleImageImportLoggableBuilder) Build

Build builds the actual Loggable object.

func (SingleImageImportLoggableBuilder) GetInspectionResults

func (w SingleImageImportLoggableBuilder) GetInspectionResults() *pb.InspectionResults

func (SingleImageImportLoggableBuilder) GetValue

func (w SingleImageImportLoggableBuilder) GetValue(key string) string

func (SingleImageImportLoggableBuilder) GetValueAsBool

func (w SingleImageImportLoggableBuilder) GetValueAsBool(key string) bool

func (SingleImageImportLoggableBuilder) GetValueAsInt64Slice

func (w SingleImageImportLoggableBuilder) GetValueAsInt64Slice(key string) []int64

func (SingleImageImportLoggableBuilder) ReadSerialPortLogs

func (w SingleImageImportLoggableBuilder) ReadSerialPortLogs() []string

func (*SingleImageImportLoggableBuilder) SetDiskAttributes

func (b *SingleImageImportLoggableBuilder) SetDiskAttributes(fileFormat string, sourceSize int64,
	targetSize int64) *SingleImageImportLoggableBuilder

SetDiskAttributes sets disk related attributes.

func (*SingleImageImportLoggableBuilder) SetInflationAttributes

func (b *SingleImageImportLoggableBuilder) SetInflationAttributes(matchResult string, inflationTypeStr string,
	inflationTimeInt64 int64, shadowInflationTimeInt64 int64) *SingleImageImportLoggableBuilder

SetInflationAttributes sets inflation related attributes.

func (*SingleImageImportLoggableBuilder) SetInspectionResults

func (b *SingleImageImportLoggableBuilder) SetInspectionResults(inspectionResults *pb.InspectionResults) *SingleImageImportLoggableBuilder

SetInspectionResults sets inspection results.

func (*SingleImageImportLoggableBuilder) SetUEFIMetrics

func (b *SingleImageImportLoggableBuilder) SetUEFIMetrics(isUEFICompatibleImageBool bool, isUEFIDetectedBool bool,
	biosBootableBool bool, rootFSString string) *SingleImageImportLoggableBuilder

SetUEFIMetrics sets UEFI related metrics.

type WindowsUpgradeParams

type WindowsUpgradeParams struct {
	*CommonParams

	SourceOS               string `json:"source_os,omitempty"`
	TargetOS               string `json:"target_os,omitempty"`
	Instance               string `json:"instance,omitempty"`
	CreateMachineBackup    bool   `json:"create_machine_backup"`
	AutoRollback           bool   `json:"auto_rollback"`
	UseStagingInstallMedia bool   `json:"use_staging_install_media"`
}

WindowsUpgradeParams contains all input params for windows upgrade

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL