566 lines
15 KiB
Protocol Buffer
566 lines
15 KiB
Protocol Buffer
// Copyright 2018 The Chromium OS Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
syntax = "proto3";
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
// This file defines messages used for interacting directly with containers
|
|
// running inside of a VM.
|
|
package vm_tools.cicerone;
|
|
option go_package = "vm_cicerone_proto";
|
|
|
|
// Message sent to cicerone when a VM has started up. This is just for
|
|
// tracking purposes by cicerone.
|
|
message NotifyVmStartedRequest {
|
|
// Name of the VM.
|
|
string vm_name = 1;
|
|
|
|
// The owner of the VM.
|
|
string owner_id = 2;
|
|
|
|
// The IPv4 subnet for containers within the VM in network byte order.
|
|
uint32 container_ipv4_subnet = 3;
|
|
|
|
// The netmask for the IPv4 subnet for containers within the VM in network
|
|
// byte order.
|
|
uint32 container_ipv4_netmask = 4;
|
|
|
|
// The IPv4 address of the VM in network byte order.
|
|
uint32 ipv4_address = 5;
|
|
|
|
// The virtual socket context id assigned to the VM.
|
|
uint32 cid = 6;
|
|
}
|
|
|
|
// Message sent to cicerone when a VM stopped or failed to complete startup.
|
|
// This is just for tracking purposes by cicerone.
|
|
message NotifyVmStoppedRequest {
|
|
// Name of the VM.
|
|
string vm_name = 1;
|
|
|
|
// The owner of the VM.
|
|
string owner_id = 2;
|
|
}
|
|
|
|
// Message sent to cicerone when requesting a token for linking to a container
|
|
// that is going to be started for a VM.
|
|
message ContainerTokenRequest {
|
|
// Name of the VM.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Reply to the GetContainerToken method.
|
|
message ContainerTokenResponse {
|
|
// A token that should be passed into the container to identify itself. This
|
|
// token will be the empty string if the request was invalid.
|
|
string container_token = 1;
|
|
}
|
|
|
|
// Message sent to cicerone to check whether or not a specific container is
|
|
// currently running.
|
|
message IsContainerRunningRequest {
|
|
// Name of the VM.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Reply to the IsContainerRunning method.
|
|
message IsContainerRunningResponse {
|
|
// True if the container is running, false otherwise.
|
|
bool container_running = 1;
|
|
}
|
|
|
|
// Message used in the signal for when tremplin has started.
|
|
message TremplinStartedSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// The owner of the VM.
|
|
string owner_id = 2;
|
|
}
|
|
|
|
// Message used in the signal for when a container has started up.
|
|
message ContainerStartedSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Message used in the signal for when a container has shut down.
|
|
message ContainerShutdownSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Request to launch on application in the specified VM/container. Used with the
|
|
// LaunchContainerApplication D-Bus message into vm_concierge.
|
|
message LaunchContainerApplicationRequest {
|
|
// Display scaling of the app windows.
|
|
enum DisplayScaling {
|
|
// Default scaling.
|
|
UNSCALED = 0;
|
|
// Windows scaled. Used to scale up older app windows that don't show well
|
|
// with HiDPI display otherwise.
|
|
SCALED = 1;
|
|
}
|
|
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM to target, if empty the default
|
|
// container name will be used.
|
|
string container_name = 2;
|
|
|
|
// ID of the application to launch, should map to the desktop_file_id that
|
|
// is in the application list sent back from the container.
|
|
string desktop_file_id = 3;
|
|
|
|
// The owner of the vm and container.
|
|
string owner_id = 4;
|
|
|
|
// Files to pass as arguments when launching the application, if any, given
|
|
// as absolute paths within the container's filesystem.
|
|
repeated string files = 5;
|
|
|
|
// Display scaling requested.
|
|
DisplayScaling display_scaling = 6;
|
|
}
|
|
|
|
// Response sent back by vm_concierge when it receives a
|
|
// LaunchContainerApplication D-Bus message.
|
|
message LaunchContainerApplicationResponse {
|
|
// If true, the requested application launched successfully.
|
|
bool success = 1;
|
|
|
|
// The failure_reason if the requested application could not be started.
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Request to get application icons in the specified VM/container. Used with the
|
|
// GetContainerAppIcon D-Bus message into vm_concierge.
|
|
message ContainerAppIconRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM to target, if empty the default
|
|
// container name will be used.
|
|
string container_name = 2;
|
|
|
|
// IDs of the application to get icons for, should map to the desktop_file_id
|
|
// that is in the application list sent back from the container.
|
|
repeated string desktop_file_ids = 3;
|
|
|
|
// The icon size with both its height and width equal to this number.
|
|
int32 size = 4;
|
|
|
|
// The target scale of this icon. This is the scale factor at which this icon
|
|
// is designed to be used.
|
|
int32 scale = 5;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 6;
|
|
}
|
|
|
|
// One desktop file ID with its icon.
|
|
message DesktopIcon {
|
|
string desktop_file_id = 1;
|
|
bytes icon = 2;
|
|
}
|
|
|
|
// Response sent back by vm_concierge when it receives a
|
|
// GetContainerAppIcon D-Bus message.
|
|
// Some desktop_file_id may not have an icon.
|
|
message ContainerAppIconResponse {
|
|
repeated DesktopIcon icons = 1;
|
|
}
|
|
|
|
// Launch vshd request.
|
|
message LaunchVshdRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM to target.
|
|
string container_name = 2;
|
|
|
|
// The port for vshd to connect to.
|
|
uint32 port = 3;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 4;
|
|
}
|
|
|
|
// Response sent back by vm_cicerone when it receives a LaunchVshd
|
|
// call.
|
|
message LaunchVshdResponse {
|
|
bool success = 1;
|
|
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Request to get information about a Linux package file in the container.
|
|
message LinuxPackageInfoRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM to target.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
// Path to the package file (e.g. .deb) in the container's filesystem.
|
|
string file_path = 4;
|
|
}
|
|
|
|
// Response sent back from a GetLinuxPackageInfo call.
|
|
message LinuxPackageInfoResponse {
|
|
// True if the file was successfully parsed and the other fields are valid.
|
|
bool success = 1;
|
|
|
|
// Contains a textual reason for the failure in case success is false.
|
|
string failure_reason = 2;
|
|
|
|
// The package identifier is in the form of a semicolon delimited string of
|
|
// the format: name;version;arch;data
|
|
// name, version and arch are as expected. data is somewhat variant and refers
|
|
// to the state of the package as well as potentially remote repository
|
|
// information.
|
|
string package_id = 3;
|
|
|
|
// The license associated with the package. So far only the value of
|
|
// 'unknown' has been observed for this field.
|
|
string license = 4;
|
|
|
|
// The description of the package, can be a multi-line text string.
|
|
string description = 5;
|
|
|
|
// The URL for the homepage of the project.
|
|
string project_url = 6;
|
|
|
|
// Size of the package file in bytes.
|
|
uint64 size = 7;
|
|
|
|
// Usually more of a title for a package, but sometimes less descriptive
|
|
// than that.
|
|
string summary = 8;
|
|
}
|
|
|
|
// Request to install a Linux package file in the container.
|
|
message InstallLinuxPackageRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM to target.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
// Path to the package file (e.g. .deb) in the container's filesystem.
|
|
string file_path = 4;
|
|
}
|
|
|
|
// Response sent back from a InstallLinuxPackage call.
|
|
message InstallLinuxPackageResponse {
|
|
enum Status {
|
|
// Install process was successfully started, all further updates will be
|
|
// sent via the InstallLinuxPackageProgress signal.
|
|
STARTED = 0;
|
|
|
|
// Failed to start up for a general reason, specific details are given in
|
|
// failure_reason.
|
|
FAILED = 1;
|
|
|
|
// Indicates another install is already in process, this one will not be
|
|
// started.
|
|
INSTALL_ALREADY_ACTIVE = 2;
|
|
}
|
|
Status status = 1;
|
|
|
|
// Contains a textual reason for the failure in case of a FAILED status.
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Message used in a signal for updates on Linux package installations.
|
|
message InstallLinuxPackageProgressSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
enum Status {
|
|
// Install has completed and was successful. No further signals will be
|
|
// sent after this one.
|
|
SUCCEEDED = 0;
|
|
|
|
// Install failed to complete, the specific reason will be in
|
|
// failure_details. No further signals will be sent after this one.
|
|
FAILED = 1;
|
|
|
|
// This is sent periodically while packages are being downloaded.
|
|
DOWNLOADING = 2;
|
|
|
|
// This is sent periodically during the general installation phase for
|
|
// package and dependency installation.
|
|
INSTALLING = 3;
|
|
}
|
|
|
|
// Current status of the installation progress.
|
|
Status status = 4;
|
|
|
|
// Overall percentage progress.
|
|
uint32 progress_percent = 5;
|
|
|
|
// Details relating to the failure state. This can be a multi-line string in
|
|
// some cases (that's how it comes out of PackageKit, for example in the case
|
|
// of an unsatisfiable dependency).
|
|
string failure_details = 6;
|
|
}
|
|
|
|
|
|
// Request for creating an LXD container.
|
|
message CreateLxdContainerRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container to start within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
// LXD image server URL. Only simplestreams is supported for now.
|
|
string image_server = 4;
|
|
|
|
// LXD image alias.
|
|
string image_alias = 5;
|
|
}
|
|
|
|
// Response for creating an LXD container.
|
|
message CreateLxdContainerResponse {
|
|
enum Status {
|
|
// The status of creating the container is unknown.
|
|
UNKNOWN = 0;
|
|
|
|
// The container is now being created. An LxdContainerCreated signal will
|
|
// relay the final result.
|
|
CREATING = 1;
|
|
|
|
// A container with this name already exists.
|
|
EXISTS = 2;
|
|
|
|
// The container could not be created.
|
|
FAILED = 3;
|
|
}
|
|
|
|
// Container creation status.
|
|
Status status = 1;
|
|
|
|
// The failure_reason if the container could not be created.
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Message used in the LxdContainerCreated signal for the outcome of an
|
|
// LxdCreateContainer message.
|
|
message LxdContainerCreatedSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
enum Status {
|
|
// The container creation status is unknown.
|
|
UNKNOWN = 0;
|
|
|
|
// The container was successfully created.
|
|
CREATED = 1;
|
|
|
|
// The container download timed out.
|
|
DOWNLOAD_TIMED_OUT = 2;
|
|
|
|
// The container creation was cancelled.
|
|
CANCELLED = 3;
|
|
|
|
// The container creation failed for an unspecified reason.
|
|
FAILED = 4;
|
|
}
|
|
|
|
// Container creation status.
|
|
Status status = 4;
|
|
|
|
// The failure_reason if the container was not successfully created.
|
|
string failure_reason = 5;
|
|
}
|
|
|
|
// Message used in the signal for when a container is downloading.
|
|
message LxdContainerDownloadingSignal {
|
|
// Name of the VM the container is in.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
// Container download progress, as a percentage.
|
|
int32 download_progress = 4;
|
|
}
|
|
|
|
// Request for starting an LXD container.
|
|
message StartLxdContainerRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container to start within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Response for starting an LXD container.
|
|
message StartLxdContainerResponse {
|
|
enum Status {
|
|
// The status of starting the container is unknown.
|
|
UNKNOWN = 0;
|
|
|
|
// The container has started.
|
|
STARTED = 1;
|
|
|
|
// The container was already running.
|
|
RUNNING = 2;
|
|
|
|
// The container could not be started.
|
|
FAILED = 3;
|
|
}
|
|
|
|
// Container startup status.
|
|
Status status = 1;
|
|
|
|
// The failure_reason if the container could not be started.
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Request for getting the primary user for an LXD container.
|
|
message GetLxdContainerUsernameRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container to get the primary user for.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
}
|
|
|
|
// Response for getting the primary user for an LXD container.
|
|
message GetLxdContainerUsernameResponse {
|
|
enum Status {
|
|
// The status is unknown.
|
|
UNKNOWN = 0;
|
|
|
|
// The primary username is stored in the username field.
|
|
SUCCESS = 1;
|
|
|
|
// A container with the specified name doesn't exist.
|
|
CONTAINER_NOT_FOUND = 2;
|
|
|
|
// The container is not running, so the username could not be found.
|
|
CONTAINER_NOT_RUNNING = 3;
|
|
|
|
// The primary user doesn't exist.
|
|
USER_NOT_FOUND = 4;
|
|
|
|
// Some part of the operation failed.
|
|
FAILED = 5;
|
|
}
|
|
|
|
// Status of getting the primary username.
|
|
Status status = 1;
|
|
|
|
// The primary username of the container, if successful.
|
|
string username = 2;
|
|
|
|
// The failure_reason if the username could not be retrieved.
|
|
string failure_reason = 3;
|
|
}
|
|
// Request for setting up the user for an LXD container.
|
|
message SetUpLxdContainerUserRequest {
|
|
// Name of the VM to target.
|
|
string vm_name = 1;
|
|
|
|
// Name of the container to start within the VM.
|
|
string container_name = 2;
|
|
|
|
// The owner of the VM and container.
|
|
string owner_id = 3;
|
|
|
|
// Username for the first user in the container.
|
|
string container_username = 4;
|
|
}
|
|
|
|
// Response for setting up the user on an LXD container.
|
|
message SetUpLxdContainerUserResponse {
|
|
enum Status {
|
|
// The status of setting up the user is unknown.
|
|
UNKNOWN = 0;
|
|
|
|
// The user has been set up sucessfully.
|
|
SUCCESS = 1;
|
|
|
|
// The user already exists.
|
|
EXISTS = 2;
|
|
|
|
// Setting up the user failed.
|
|
FAILED = 3;
|
|
}
|
|
|
|
// Status of setting up the user.
|
|
Status status = 1;
|
|
|
|
// The failure_reason if the user was not set up successfully.
|
|
string failure_reason = 2;
|
|
}
|
|
|
|
// Request for debug information about virtual machine and container state.
|
|
message GetDebugInformationRequest {
|
|
}
|
|
|
|
// Response for debug information about virtual machine and container state.
|
|
message GetDebugInformationResponse {
|
|
// Debug information about virtual machine and container state in arbitrary format.
|
|
string debug_information = 1;
|
|
}
|