blob: 08d6327ff9c59a290a981bce8cfeac13412392ec [file] [log] [blame]
syntax = "proto3";
option go_package = "github.com/opencord/device-management-interface/v3/go/dmi";
package dmi;
import "dmi/commons.proto";
// Protos for modeling a software image and it's status
message ImageVersion {
string image_name = 1;
string version = 2;
}
message ImageInformation {
ImageVersion image = 1;
// Script used by the device specific managers to install the image.
// Script must be included in the object downloaded from the image_url
string image_install_script = 2;
// Location of the image and installation script, authentication (user/pass) if any should be in the url string
// The image_url would contain the protocol, credentials, the IP address/DNS of the server and the path of the file
// e.g. sftp://download_user:download_pass@192.168.0.1:22/images/image1
string image_url = 3;
// SHA-256 sum of the image (sha256sum on Linux)
string sha256sum = 5;
}
message ImageStatus {
enum ImageState {
UNDEFINED_STATE = 0;
COPYING_IMAGE = 1;
INSTALLING_IMAGE = 2;
COMMITTING_IMAGE = 3;
REBOOTING_DEVICE = 4;
UPGRADE_COMPLETE = 5;
UPGRADE_FAILED = 6;
ACTIVATION_COMPLETE = 7;
ACTIVATION_FAILED = 8;
}
enum Reason {
UNDEFINED_REASON = 0;
ERROR_IN_REQUEST = 1;
INTERNAL_ERROR = 2;
DEVICE_IN_WRONG_STATE = 3;
INVALID_IMAGE = 4;
WRONG_IMAGE_CHECKSUM = 5;
OPERATION_ALREADY_IN_PROGRESS = 6;
UNKNOWN_DEVICE = 7;
// The DM implementations should have retry mechanisms (timeout values dependant on specific implementations)
// and even after those if the operation cannot be completed/reached then return error with reason as DEVICE_NOT_REACHABLE
DEVICE_NOT_REACHABLE = 8;
}
Status status = 1;
Reason reason = 2;
ImageState state = 3;
// description contains more information about the current state of the procedure and is device dependant
string description = 4;
string reason_detail = 5;
}