1868 lines
68 KiB
Diff
1868 lines
68 KiB
Diff
From 5c9609914a7418ea34d1ff15dfc21877fb197763 Mon Sep 17 00:00:00 2001
|
|
From: Yuhang Wei <weiyuhang3@huawei.com>
|
|
Date: Thu, 24 Aug 2023 11:00:26 +0800
|
|
Subject: [PATCH 4/5] KubeOS: delete raw and docker image upgrade
|
|
|
|
delete the part of using raw and docker image to upgrade
|
|
|
|
Signed-off-by: Yuhang Wei <weiyuhang3@huawei.com>
|
|
---
|
|
api/v1alpha1/os_types.go | 9 -
|
|
cmd/agent/api/agent.pb.go | 337 ++++---------
|
|
cmd/agent/api/agent.proto | 15 +-
|
|
cmd/agent/server/disk_image.go | 217 --------
|
|
cmd/agent/server/disk_image_test.go | 471 ------------------
|
|
cmd/agent/server/docker_image.go | 73 ---
|
|
cmd/agent/server/docker_image_test.go | 118 -----
|
|
cmd/agent/server/server.go | 8 -
|
|
cmd/agent/server/server_test.go | 23 +-
|
|
.../controllers/os_controller_test.go | 8 -
|
|
cmd/proxy/controllers/os_controller.go | 6 -
|
|
cmd/proxy/controllers/os_controller_test.go | 16 -
|
|
.../config/crd/upgrade.openeuler.org_os.yaml | 15 -
|
|
pkg/agentclient/connection.go | 15 -
|
|
14 files changed, 115 insertions(+), 1216 deletions(-)
|
|
delete mode 100644 cmd/agent/server/disk_image.go
|
|
delete mode 100644 cmd/agent/server/disk_image_test.go
|
|
delete mode 100644 cmd/agent/server/docker_image.go
|
|
delete mode 100644 cmd/agent/server/docker_image_test.go
|
|
|
|
diff --git a/api/v1alpha1/os_types.go b/api/v1alpha1/os_types.go
|
|
index f9474b7..b4655e8 100644
|
|
--- a/api/v1alpha1/os_types.go
|
|
+++ b/api/v1alpha1/os_types.go
|
|
@@ -19,22 +19,13 @@ import (
|
|
// OSSpec defines the desired state of OS
|
|
type OSSpec struct {
|
|
OSVersion string `json:"osversion"`
|
|
- ImageURL string `json:"imageurl"`
|
|
MaxUnavailable int `json:"maxunavailable"`
|
|
CheckSum string `json:"checksum"`
|
|
- FlagSafe bool `json:"flagSafe"`
|
|
- MTLS bool `json:"mtls"`
|
|
ImageType string `json:"imagetype"`
|
|
ContainerImage string `json:"containerimage"`
|
|
OpsType string `json:"opstype"`
|
|
EvictPodForce bool `json:"evictpodforce"`
|
|
// +kubebuilder:validation:Optional
|
|
- CaCert string `json:"cacert"`
|
|
- // +kubebuilder:validation:Optional
|
|
- ClientCert string `json:"clientcert"`
|
|
- // +kubebuilder:validation:Optional
|
|
- ClientKey string `json:"clientkey"`
|
|
- // +kubebuilder:validation:Optional
|
|
SysConfigs SysConfigs `json:"sysconfigs"`
|
|
// +kubebuilder:validation:Optional
|
|
UpgradeConfigs SysConfigs `json:"upgradeconfigs"`
|
|
diff --git a/cmd/agent/api/agent.pb.go b/cmd/agent/api/agent.pb.go
|
|
index 077a57e..034337d 100644
|
|
--- a/cmd/agent/api/agent.pb.go
|
|
+++ b/cmd/agent/api/agent.pb.go
|
|
@@ -36,14 +36,10 @@ type UpdateRequest struct {
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
- Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
|
- ImageUrl string `protobuf:"bytes,2,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
|
|
- CheckSum string `protobuf:"bytes,3,opt,name=check_sum,json=checkSum,proto3" json:"check_sum,omitempty"`
|
|
- FlagSafe bool `protobuf:"varint,4,opt,name=flagSafe,proto3" json:"flagSafe,omitempty"`
|
|
- MTLS bool `protobuf:"varint,5,opt,name=mTLS,proto3" json:"mTLS,omitempty"`
|
|
- ImageType string `protobuf:"bytes,6,opt,name=image_type,json=imageType,proto3" json:"image_type,omitempty"`
|
|
- ContainerImage string `protobuf:"bytes,7,opt,name=container_image,json=containerImage,proto3" json:"container_image,omitempty"`
|
|
- Certs *CertsInfo `protobuf:"bytes,8,opt,name=certs,proto3" json:"certs,omitempty"`
|
|
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
|
+ CheckSum string `protobuf:"bytes,2,opt,name=check_sum,json=checkSum,proto3" json:"check_sum,omitempty"`
|
|
+ ImageType string `protobuf:"bytes,3,opt,name=image_type,json=imageType,proto3" json:"image_type,omitempty"`
|
|
+ ContainerImage string `protobuf:"bytes,4,opt,name=container_image,json=containerImage,proto3" json:"container_image,omitempty"`
|
|
}
|
|
|
|
func (x *UpdateRequest) Reset() {
|
|
@@ -85,13 +81,6 @@ func (x *UpdateRequest) GetVersion() string {
|
|
return ""
|
|
}
|
|
|
|
-func (x *UpdateRequest) GetImageUrl() string {
|
|
- if x != nil {
|
|
- return x.ImageUrl
|
|
- }
|
|
- return ""
|
|
-}
|
|
-
|
|
func (x *UpdateRequest) GetCheckSum() string {
|
|
if x != nil {
|
|
return x.CheckSum
|
|
@@ -99,20 +88,6 @@ func (x *UpdateRequest) GetCheckSum() string {
|
|
return ""
|
|
}
|
|
|
|
-func (x *UpdateRequest) GetFlagSafe() bool {
|
|
- if x != nil {
|
|
- return x.FlagSafe
|
|
- }
|
|
- return false
|
|
-}
|
|
-
|
|
-func (x *UpdateRequest) GetMTLS() bool {
|
|
- if x != nil {
|
|
- return x.MTLS
|
|
- }
|
|
- return false
|
|
-}
|
|
-
|
|
func (x *UpdateRequest) GetImageType() string {
|
|
if x != nil {
|
|
return x.ImageType
|
|
@@ -127,76 +102,6 @@ func (x *UpdateRequest) GetContainerImage() string {
|
|
return ""
|
|
}
|
|
|
|
-func (x *UpdateRequest) GetCerts() *CertsInfo {
|
|
- if x != nil {
|
|
- return x.Certs
|
|
- }
|
|
- return nil
|
|
-}
|
|
-
|
|
-type CertsInfo struct {
|
|
- state protoimpl.MessageState
|
|
- sizeCache protoimpl.SizeCache
|
|
- unknownFields protoimpl.UnknownFields
|
|
-
|
|
- CaCaert string `protobuf:"bytes,1,opt,name=ca_caert,json=caCaert,proto3" json:"ca_caert,omitempty"`
|
|
- ClientCert string `protobuf:"bytes,2,opt,name=client_cert,json=clientCert,proto3" json:"client_cert,omitempty"`
|
|
- ClientKey string `protobuf:"bytes,3,opt,name=client_key,json=clientKey,proto3" json:"client_key,omitempty"`
|
|
-}
|
|
-
|
|
-func (x *CertsInfo) Reset() {
|
|
- *x = CertsInfo{}
|
|
- if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[1]
|
|
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
- ms.StoreMessageInfo(mi)
|
|
- }
|
|
-}
|
|
-
|
|
-func (x *CertsInfo) String() string {
|
|
- return protoimpl.X.MessageStringOf(x)
|
|
-}
|
|
-
|
|
-func (*CertsInfo) ProtoMessage() {}
|
|
-
|
|
-func (x *CertsInfo) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[1]
|
|
- if protoimpl.UnsafeEnabled && x != nil {
|
|
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
- if ms.LoadMessageInfo() == nil {
|
|
- ms.StoreMessageInfo(mi)
|
|
- }
|
|
- return ms
|
|
- }
|
|
- return mi.MessageOf(x)
|
|
-}
|
|
-
|
|
-// Deprecated: Use CertsInfo.ProtoReflect.Descriptor instead.
|
|
-func (*CertsInfo) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{1}
|
|
-}
|
|
-
|
|
-func (x *CertsInfo) GetCaCaert() string {
|
|
- if x != nil {
|
|
- return x.CaCaert
|
|
- }
|
|
- return ""
|
|
-}
|
|
-
|
|
-func (x *CertsInfo) GetClientCert() string {
|
|
- if x != nil {
|
|
- return x.ClientCert
|
|
- }
|
|
- return ""
|
|
-}
|
|
-
|
|
-func (x *CertsInfo) GetClientKey() string {
|
|
- if x != nil {
|
|
- return x.ClientKey
|
|
- }
|
|
- return ""
|
|
-}
|
|
-
|
|
type UpdateResponse struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
@@ -208,7 +113,7 @@ type UpdateResponse struct {
|
|
func (x *UpdateResponse) Reset() {
|
|
*x = UpdateResponse{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[2]
|
|
+ mi := &file_api_agent_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -221,7 +126,7 @@ func (x *UpdateResponse) String() string {
|
|
func (*UpdateResponse) ProtoMessage() {}
|
|
|
|
func (x *UpdateResponse) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[2]
|
|
+ mi := &file_api_agent_proto_msgTypes[1]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -234,7 +139,7 @@ func (x *UpdateResponse) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use UpdateResponse.ProtoReflect.Descriptor instead.
|
|
func (*UpdateResponse) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{2}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *UpdateResponse) GetErr() int32 {
|
|
@@ -253,7 +158,7 @@ type RollbackRequest struct {
|
|
func (x *RollbackRequest) Reset() {
|
|
*x = RollbackRequest{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[3]
|
|
+ mi := &file_api_agent_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -266,7 +171,7 @@ func (x *RollbackRequest) String() string {
|
|
func (*RollbackRequest) ProtoMessage() {}
|
|
|
|
func (x *RollbackRequest) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[3]
|
|
+ mi := &file_api_agent_proto_msgTypes[2]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -279,7 +184,7 @@ func (x *RollbackRequest) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use RollbackRequest.ProtoReflect.Descriptor instead.
|
|
func (*RollbackRequest) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{3}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
type RollbackResponse struct {
|
|
@@ -293,7 +198,7 @@ type RollbackResponse struct {
|
|
func (x *RollbackResponse) Reset() {
|
|
*x = RollbackResponse{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[4]
|
|
+ mi := &file_api_agent_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -306,7 +211,7 @@ func (x *RollbackResponse) String() string {
|
|
func (*RollbackResponse) ProtoMessage() {}
|
|
|
|
func (x *RollbackResponse) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[4]
|
|
+ mi := &file_api_agent_proto_msgTypes[3]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -319,7 +224,7 @@ func (x *RollbackResponse) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use RollbackResponse.ProtoReflect.Descriptor instead.
|
|
func (*RollbackResponse) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{4}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *RollbackResponse) GetErr() int32 {
|
|
@@ -340,7 +245,7 @@ type ConfigureRequest struct {
|
|
func (x *ConfigureRequest) Reset() {
|
|
*x = ConfigureRequest{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[5]
|
|
+ mi := &file_api_agent_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -353,7 +258,7 @@ func (x *ConfigureRequest) String() string {
|
|
func (*ConfigureRequest) ProtoMessage() {}
|
|
|
|
func (x *ConfigureRequest) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[5]
|
|
+ mi := &file_api_agent_proto_msgTypes[4]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -366,7 +271,7 @@ func (x *ConfigureRequest) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use ConfigureRequest.ProtoReflect.Descriptor instead.
|
|
func (*ConfigureRequest) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{5}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *ConfigureRequest) GetConfigs() []*SysConfig {
|
|
@@ -387,7 +292,7 @@ type ConfigureResponse struct {
|
|
func (x *ConfigureResponse) Reset() {
|
|
*x = ConfigureResponse{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[6]
|
|
+ mi := &file_api_agent_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -400,7 +305,7 @@ func (x *ConfigureResponse) String() string {
|
|
func (*ConfigureResponse) ProtoMessage() {}
|
|
|
|
func (x *ConfigureResponse) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[6]
|
|
+ mi := &file_api_agent_proto_msgTypes[5]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -413,7 +318,7 @@ func (x *ConfigureResponse) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use ConfigureResponse.ProtoReflect.Descriptor instead.
|
|
func (*ConfigureResponse) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{6}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
func (x *ConfigureResponse) GetErr() int32 {
|
|
@@ -436,7 +341,7 @@ type SysConfig struct {
|
|
func (x *SysConfig) Reset() {
|
|
*x = SysConfig{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[7]
|
|
+ mi := &file_api_agent_proto_msgTypes[6]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -449,7 +354,7 @@ func (x *SysConfig) String() string {
|
|
func (*SysConfig) ProtoMessage() {}
|
|
|
|
func (x *SysConfig) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[7]
|
|
+ mi := &file_api_agent_proto_msgTypes[6]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -462,7 +367,7 @@ func (x *SysConfig) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use SysConfig.ProtoReflect.Descriptor instead.
|
|
func (*SysConfig) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{7}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{6}
|
|
}
|
|
|
|
func (x *SysConfig) GetModel() string {
|
|
@@ -498,7 +403,7 @@ type KeyInfo struct {
|
|
func (x *KeyInfo) Reset() {
|
|
*x = KeyInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
- mi := &file_api_agent_proto_msgTypes[8]
|
|
+ mi := &file_api_agent_proto_msgTypes[7]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
@@ -511,7 +416,7 @@ func (x *KeyInfo) String() string {
|
|
func (*KeyInfo) ProtoMessage() {}
|
|
|
|
func (x *KeyInfo) ProtoReflect() protoreflect.Message {
|
|
- mi := &file_api_agent_proto_msgTypes[8]
|
|
+ mi := &file_api_agent_proto_msgTypes[7]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
@@ -524,7 +429,7 @@ func (x *KeyInfo) ProtoReflect() protoreflect.Message {
|
|
|
|
// Deprecated: Use KeyInfo.ProtoReflect.Descriptor instead.
|
|
func (*KeyInfo) Descriptor() ([]byte, []int) {
|
|
- return file_api_agent_proto_rawDescGZIP(), []int{8}
|
|
+ return file_api_agent_proto_rawDescGZIP(), []int{7}
|
|
}
|
|
|
|
func (x *KeyInfo) GetValue() string {
|
|
@@ -545,74 +450,60 @@ var File_api_agent_proto protoreflect.FileDescriptor
|
|
|
|
var file_api_agent_proto_rawDesc = []byte{
|
|
0x0a, 0x0f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
- 0x6f, 0x12, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x83, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64,
|
|
+ 0x6f, 0x12, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64,
|
|
0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
|
|
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
|
|
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72,
|
|
- 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72,
|
|
- 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x03,
|
|
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x12, 0x1a,
|
|
- 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x53, 0x61, 0x66, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
|
|
- 0x52, 0x08, 0x66, 0x6c, 0x61, 0x67, 0x53, 0x61, 0x66, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x54,
|
|
- 0x4c, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6d, 0x54, 0x4c, 0x53, 0x12, 0x1d,
|
|
- 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,
|
|
- 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a,
|
|
- 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65,
|
|
- 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
|
|
- 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18,
|
|
- 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x65,
|
|
- 0x72, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x63, 0x65, 0x72, 0x74, 0x73, 0x22, 0x66,
|
|
- 0x0a, 0x09, 0x43, 0x65, 0x72, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x63,
|
|
- 0x61, 0x5f, 0x63, 0x61, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
|
|
- 0x61, 0x43, 0x61, 0x65, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
|
- 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69,
|
|
- 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
|
- 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69,
|
|
- 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x22, 0x22, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
|
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18,
|
|
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x52, 0x6f,
|
|
- 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x24, 0x0a,
|
|
- 0x10, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
|
- 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
|
|
- 0x65, 0x72, 0x72, 0x22, 0x3e, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65,
|
|
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69,
|
|
- 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
|
|
- 0x2e, 0x53, 0x79, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66,
|
|
- 0x69, 0x67, 0x73, 0x22, 0x25, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65,
|
|
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18,
|
|
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x09, 0x53,
|
|
- 0x79, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65,
|
|
- 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1e,
|
|
- 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
|
|
- 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3a,
|
|
- 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
|
|
- 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x43, 0x6f, 0x6e, 0x66,
|
|
- 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
- 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x4b, 0x0a, 0x0d, 0x43, 0x6f,
|
|
- 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
|
|
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a,
|
|
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61,
|
|
- 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61,
|
|
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e,
|
|
- 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72,
|
|
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65,
|
|
- 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xbe, 0x01, 0x0a, 0x02, 0x4f, 0x53, 0x12, 0x37, 0x0a,
|
|
- 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e,
|
|
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e,
|
|
- 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70,
|
|
- 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
|
|
- 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62,
|
|
- 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x61, 0x67, 0x65,
|
|
- 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
|
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
|
|
- 0x72, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
|
|
- 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x67,
|
|
- 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73,
|
|
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x20, 0x5a, 0x1e, 0x6f, 0x70, 0x65, 0x6e, 0x65,
|
|
- 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x6f, 0x73, 0x2f,
|
|
- 0x61, 0x70, 0x69, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
- 0x33,
|
|
+ 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x75,
|
|
+ 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75,
|
|
+ 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
|
|
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
|
|
+ 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d,
|
|
+ 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61,
|
|
+ 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x55, 0x70, 0x64,
|
|
+ 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65,
|
|
+ 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x11, 0x0a,
|
|
+ 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
|
+ 0x22, 0x24, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
|
|
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
+ 0x05, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x3e, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
|
+ 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x6f,
|
|
+ 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67,
|
|
+ 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63,
|
|
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x25, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
|
+ 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65,
|
|
+ 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0xca, 0x01,
|
|
+ 0x0a, 0x09, 0x53, 0x79, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6d,
|
|
+ 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65,
|
|
+ 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x18,
|
|
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74,
|
|
+ 0x68, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
|
|
+ 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x43,
|
|
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e,
|
|
+ 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x4b, 0x0a,
|
|
+ 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
|
|
+ 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
|
|
+ 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
+ 0x0e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52,
|
|
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x07, 0x4b, 0x65,
|
|
+ 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
|
|
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f,
|
|
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
|
|
+ 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xbe, 0x01, 0x0a, 0x02, 0x4f, 0x53,
|
|
+ 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65,
|
|
+ 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
|
+ 0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
|
|
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x08, 0x52, 0x6f, 0x6c,
|
|
+ 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f,
|
|
+ 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e,
|
|
+ 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65,
|
|
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66,
|
|
+ 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f,
|
|
+ 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
|
|
+ 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65,
|
|
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x20, 0x5a, 0x1e, 0x6f, 0x70,
|
|
+ 0x65, 0x6e, 0x65, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6b, 0x75, 0x62, 0x65,
|
|
+ 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72,
|
|
+ 0x6f, 0x74, 0x6f, 0x33,
|
|
}
|
|
|
|
var (
|
|
@@ -627,35 +518,33 @@ func file_api_agent_proto_rawDescGZIP() []byte {
|
|
return file_api_agent_proto_rawDescData
|
|
}
|
|
|
|
-var file_api_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
|
|
+var file_api_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
|
var file_api_agent_proto_goTypes = []interface{}{
|
|
(*UpdateRequest)(nil), // 0: agent.UpdateRequest
|
|
- (*CertsInfo)(nil), // 1: agent.CertsInfo
|
|
- (*UpdateResponse)(nil), // 2: agent.UpdateResponse
|
|
- (*RollbackRequest)(nil), // 3: agent.RollbackRequest
|
|
- (*RollbackResponse)(nil), // 4: agent.RollbackResponse
|
|
- (*ConfigureRequest)(nil), // 5: agent.ConfigureRequest
|
|
- (*ConfigureResponse)(nil), // 6: agent.ConfigureResponse
|
|
- (*SysConfig)(nil), // 7: agent.SysConfig
|
|
- (*KeyInfo)(nil), // 8: agent.KeyInfo
|
|
- nil, // 9: agent.SysConfig.ContentsEntry
|
|
+ (*UpdateResponse)(nil), // 1: agent.UpdateResponse
|
|
+ (*RollbackRequest)(nil), // 2: agent.RollbackRequest
|
|
+ (*RollbackResponse)(nil), // 3: agent.RollbackResponse
|
|
+ (*ConfigureRequest)(nil), // 4: agent.ConfigureRequest
|
|
+ (*ConfigureResponse)(nil), // 5: agent.ConfigureResponse
|
|
+ (*SysConfig)(nil), // 6: agent.SysConfig
|
|
+ (*KeyInfo)(nil), // 7: agent.KeyInfo
|
|
+ nil, // 8: agent.SysConfig.ContentsEntry
|
|
}
|
|
var file_api_agent_proto_depIdxs = []int32{
|
|
- 1, // 0: agent.UpdateRequest.certs:type_name -> agent.CertsInfo
|
|
- 7, // 1: agent.ConfigureRequest.configs:type_name -> agent.SysConfig
|
|
- 9, // 2: agent.SysConfig.contents:type_name -> agent.SysConfig.ContentsEntry
|
|
- 8, // 3: agent.SysConfig.ContentsEntry.value:type_name -> agent.KeyInfo
|
|
- 0, // 4: agent.OS.Update:input_type -> agent.UpdateRequest
|
|
- 3, // 5: agent.OS.Rollback:input_type -> agent.RollbackRequest
|
|
- 5, // 6: agent.OS.Configure:input_type -> agent.ConfigureRequest
|
|
- 2, // 7: agent.OS.Update:output_type -> agent.UpdateResponse
|
|
- 4, // 8: agent.OS.Rollback:output_type -> agent.RollbackResponse
|
|
- 6, // 9: agent.OS.Configure:output_type -> agent.ConfigureResponse
|
|
- 7, // [7:10] is the sub-list for method output_type
|
|
- 4, // [4:7] is the sub-list for method input_type
|
|
- 4, // [4:4] is the sub-list for extension type_name
|
|
- 4, // [4:4] is the sub-list for extension extendee
|
|
- 0, // [0:4] is the sub-list for field type_name
|
|
+ 6, // 0: agent.ConfigureRequest.configs:type_name -> agent.SysConfig
|
|
+ 8, // 1: agent.SysConfig.contents:type_name -> agent.SysConfig.ContentsEntry
|
|
+ 7, // 2: agent.SysConfig.ContentsEntry.value:type_name -> agent.KeyInfo
|
|
+ 0, // 3: agent.OS.Update:input_type -> agent.UpdateRequest
|
|
+ 2, // 4: agent.OS.Rollback:input_type -> agent.RollbackRequest
|
|
+ 4, // 5: agent.OS.Configure:input_type -> agent.ConfigureRequest
|
|
+ 1, // 6: agent.OS.Update:output_type -> agent.UpdateResponse
|
|
+ 3, // 7: agent.OS.Rollback:output_type -> agent.RollbackResponse
|
|
+ 5, // 8: agent.OS.Configure:output_type -> agent.ConfigureResponse
|
|
+ 6, // [6:9] is the sub-list for method output_type
|
|
+ 3, // [3:6] is the sub-list for method input_type
|
|
+ 3, // [3:3] is the sub-list for extension type_name
|
|
+ 3, // [3:3] is the sub-list for extension extendee
|
|
+ 0, // [0:3] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_api_agent_proto_init() }
|
|
@@ -677,18 +566,6 @@ func file_api_agent_proto_init() {
|
|
}
|
|
}
|
|
file_api_agent_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
- switch v := v.(*CertsInfo); i {
|
|
- case 0:
|
|
- return &v.state
|
|
- case 1:
|
|
- return &v.sizeCache
|
|
- case 2:
|
|
- return &v.unknownFields
|
|
- default:
|
|
- return nil
|
|
- }
|
|
- }
|
|
- file_api_agent_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UpdateResponse); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -700,7 +577,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*RollbackRequest); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -712,7 +589,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*RollbackResponse); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -724,7 +601,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*ConfigureRequest); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -736,7 +613,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*ConfigureResponse); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -748,7 +625,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*SysConfig); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -760,7 +637,7 @@ func file_api_agent_proto_init() {
|
|
return nil
|
|
}
|
|
}
|
|
- file_api_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
|
+ file_api_agent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*KeyInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
@@ -779,7 +656,7 @@ func file_api_agent_proto_init() {
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: file_api_agent_proto_rawDesc,
|
|
NumEnums: 0,
|
|
- NumMessages: 10,
|
|
+ NumMessages: 9,
|
|
NumExtensions: 0,
|
|
NumServices: 1,
|
|
},
|
|
diff --git a/cmd/agent/api/agent.proto b/cmd/agent/api/agent.proto
|
|
index fd15b9f..e81ad54 100644
|
|
--- a/cmd/agent/api/agent.proto
|
|
+++ b/cmd/agent/api/agent.proto
|
|
@@ -24,20 +24,11 @@ service OS {
|
|
|
|
message UpdateRequest {
|
|
string version = 1;
|
|
- string image_url = 2;
|
|
- string check_sum = 3;
|
|
- bool flagSafe = 4;
|
|
- bool mTLS = 5;
|
|
- string image_type = 6;
|
|
- string container_image = 7;
|
|
- CertsInfo certs = 8;
|
|
+ string check_sum = 2;
|
|
+ string image_type = 3;
|
|
+ string container_image = 4;
|
|
}
|
|
|
|
-message CertsInfo {
|
|
- string ca_caert = 1;
|
|
- string client_cert = 2;
|
|
- string client_key = 3;
|
|
-}
|
|
|
|
message UpdateResponse {
|
|
int32 err = 1;
|
|
diff --git a/cmd/agent/server/disk_image.go b/cmd/agent/server/disk_image.go
|
|
deleted file mode 100644
|
|
index 8bd6bf6..0000000
|
|
--- a/cmd/agent/server/disk_image.go
|
|
+++ /dev/null
|
|
@@ -1,217 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
|
|
- * KubeOS is licensed under the Mulan PSL v2.
|
|
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
- * You may obtain a copy of Mulan PSL v2 at:
|
|
- * http://license.coscl.org.cn/MulanPSL2
|
|
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
|
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
|
- * PURPOSE.
|
|
- * See the Mulan PSL v2 for more details.
|
|
- */
|
|
-
|
|
-// Package server implements server of os-agent and listener of os-agent server. The server uses gRPC interface.
|
|
-package server
|
|
-
|
|
-import (
|
|
- "crypto/sha256"
|
|
- "crypto/tls"
|
|
- "crypto/x509"
|
|
- "encoding/hex"
|
|
- "fmt"
|
|
- "io"
|
|
- "io/ioutil"
|
|
- "net/http"
|
|
- "os"
|
|
- "path/filepath"
|
|
- "strings"
|
|
- "syscall"
|
|
-
|
|
- "github.com/sirupsen/logrus"
|
|
-
|
|
- pb "openeuler.org/KubeOS/cmd/agent/api"
|
|
-)
|
|
-
|
|
-type diskHandler struct{}
|
|
-
|
|
-func (d diskHandler) downloadImage(req *pb.UpdateRequest) (string, error) {
|
|
- imagePath, err := d.getRootfsArchive(req, preparePath{})
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- return imagePath, nil
|
|
-}
|
|
-
|
|
-func (d diskHandler) getRootfsArchive(req *pb.UpdateRequest, neededPath preparePath) (string, error) {
|
|
- imagePath, err := download(req)
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- if err = checkSumMatch(imagePath, req.CheckSum); err != nil {
|
|
- return "", err
|
|
- }
|
|
- return imagePath, nil
|
|
-}
|
|
-
|
|
-func download(req *pb.UpdateRequest) (string, error) {
|
|
- resp, err := getImageURL(req)
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- defer resp.Body.Close()
|
|
- if resp.StatusCode != http.StatusOK {
|
|
- return "", fmt.Errorf("URL %s returns error %s", req.ImageUrl, resp.Status)
|
|
- }
|
|
- fs := syscall.Statfs_t{}
|
|
- if err = syscall.Statfs(PersistDir, &fs); err != nil {
|
|
- return "", err
|
|
- }
|
|
- if int64(fs.Bfree)*fs.Bsize < resp.ContentLength+buffer { // these data come from disk size, will not overflow
|
|
- return "", fmt.Errorf("space is not enough for downloaing")
|
|
- }
|
|
-
|
|
- out, err := os.Create(filepath.Join(PersistDir, "update.img"))
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- defer out.Close()
|
|
- err = os.Chmod(out.Name(), imgPermission)
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- logrus.Infoln("downloading to file " + out.Name())
|
|
- if _, err = io.Copy(out, resp.Body); err != nil {
|
|
- if errRemove := os.Remove(out.Name()); errRemove != nil {
|
|
- logrus.Errorln("remove " + out.Name() + " error " + errRemove.Error())
|
|
- }
|
|
- return "", err
|
|
- }
|
|
- return out.Name(), nil
|
|
-}
|
|
-
|
|
-func checkSumMatch(filePath, checkSum string) error {
|
|
- file, err := os.Open(filePath)
|
|
- if err != nil {
|
|
- return err
|
|
- }
|
|
- defer file.Close()
|
|
- hash := sha256.New()
|
|
- if _, err := io.Copy(hash, file); err != nil {
|
|
- return err
|
|
- }
|
|
- if calSum := hex.EncodeToString(hash.Sum(nil)); calSum != checkSum {
|
|
- defer os.Remove(filePath)
|
|
- return fmt.Errorf("checkSum %s mismatch to %s", calSum, checkSum)
|
|
- }
|
|
- return nil
|
|
-}
|
|
-
|
|
-func getImageURL(req *pb.UpdateRequest) (*http.Response, error) {
|
|
- imageURL := req.ImageUrl
|
|
- flagSafe := req.FlagSafe
|
|
- mTLS := req.MTLS
|
|
- caCert := req.Certs.CaCaert
|
|
- clientCert := req.Certs.ClientCert
|
|
- clientKey := req.Certs.ClientKey
|
|
-
|
|
- if !strings.HasPrefix(imageURL, "https://") {
|
|
- if !flagSafe {
|
|
- logrus.Errorln("this imageUrl is not safe")
|
|
- return &http.Response{}, fmt.Errorf("this imageUrl is not safe")
|
|
- }
|
|
- resp, err := http.Get(imageURL)
|
|
- if err != nil {
|
|
- return &http.Response{}, err
|
|
- }
|
|
- return resp, nil
|
|
- } else if mTLS {
|
|
- client, err := loadClientCerts(caCert, clientCert, clientKey)
|
|
- if err != nil {
|
|
- return &http.Response{}, err
|
|
- }
|
|
- resp, err := client.Get(imageURL)
|
|
- if err != nil {
|
|
- return &http.Response{}, err
|
|
- }
|
|
- return resp, nil
|
|
- } else {
|
|
- client, err := loadCaCerts(caCert)
|
|
- if err != nil {
|
|
- return &http.Response{}, err
|
|
- }
|
|
- resp, err := client.Get(imageURL)
|
|
- if err != nil {
|
|
- return &http.Response{}, err
|
|
- }
|
|
- return resp, nil
|
|
- }
|
|
-}
|
|
-
|
|
-func loadCaCerts(caCert string) (*http.Client, error) {
|
|
- pool := x509.NewCertPool()
|
|
- err := certExist(caCert)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
- ca, err := ioutil.ReadFile(getCertPath() + caCert)
|
|
- if err != nil {
|
|
- return &http.Client{}, fmt.Errorf("read the ca certificate error %s", err)
|
|
- }
|
|
- pool.AppendCertsFromPEM(ca)
|
|
- tr := &http.Transport{
|
|
- TLSClientConfig: &tls.Config{
|
|
- RootCAs: pool,
|
|
- },
|
|
- }
|
|
- client := &http.Client{Transport: tr}
|
|
- return client, nil
|
|
-}
|
|
-
|
|
-func loadClientCerts(caCert, clientCert, clientKey string) (*http.Client, error) {
|
|
- pool := x509.NewCertPool()
|
|
- err := certExist(caCert)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
- ca, err := ioutil.ReadFile(getCertPath() + caCert)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
- pool.AppendCertsFromPEM(ca)
|
|
- err = certExist(clientCert)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
- err = certExist(clientKey)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
- cliCrt, err := tls.LoadX509KeyPair(getCertPath()+clientCert, getCertPath()+clientKey)
|
|
- if err != nil {
|
|
- return &http.Client{}, err
|
|
- }
|
|
-
|
|
- tr := &http.Transport{
|
|
- TLSClientConfig: &tls.Config{
|
|
- RootCAs: pool,
|
|
- Certificates: []tls.Certificate{cliCrt},
|
|
- },
|
|
- }
|
|
-
|
|
- client := &http.Client{Transport: tr}
|
|
- return client, nil
|
|
-}
|
|
-
|
|
-func certExist(certFile string) error {
|
|
- if certFile == "" {
|
|
- return fmt.Errorf("please provide the certificate")
|
|
- }
|
|
- _, err := os.Stat(getCertPath() + certFile)
|
|
- if err != nil {
|
|
- if os.IsNotExist(err) {
|
|
- return fmt.Errorf("certificate is not exist %s ", err)
|
|
- }
|
|
- return fmt.Errorf("certificate has an error %s", err)
|
|
- }
|
|
- return nil
|
|
-}
|
|
diff --git a/cmd/agent/server/disk_image_test.go b/cmd/agent/server/disk_image_test.go
|
|
deleted file mode 100644
|
|
index f970bd7..0000000
|
|
--- a/cmd/agent/server/disk_image_test.go
|
|
+++ /dev/null
|
|
@@ -1,471 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
|
|
- * KubeOS is licensed under the Mulan PSL v2.
|
|
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
- * You may obtain a copy of Mulan PSL v2 at:
|
|
- * http://license.coscl.org.cn/MulanPSL2
|
|
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
|
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
|
- * PURPOSE.
|
|
- * See the Mulan PSL v2 for more details.
|
|
- */
|
|
-
|
|
-// Package server implements server of os-agent and listener of os-agent server. The server uses gRPC interface.
|
|
-package server
|
|
-
|
|
-import (
|
|
- "crypto/rand"
|
|
- "crypto/rsa"
|
|
- "crypto/sha256"
|
|
- "crypto/x509"
|
|
- "crypto/x509/pkix"
|
|
- "encoding/hex"
|
|
- "encoding/pem"
|
|
- "fmt"
|
|
- "io"
|
|
- "io/fs"
|
|
- "math/big"
|
|
- "net/http"
|
|
- "os"
|
|
- "reflect"
|
|
- "strings"
|
|
- "syscall"
|
|
- "testing"
|
|
- "time"
|
|
-
|
|
- "github.com/agiledragon/gomonkey/v2"
|
|
- pb "openeuler.org/KubeOS/cmd/agent/api"
|
|
-)
|
|
-
|
|
-func Test_download(t *testing.T) {
|
|
- tmpDir := t.TempDir()
|
|
- tmpFileForDownload := tmpDir + "/tmpFileForDownload"
|
|
- tmpFile, err := os.Create(tmpFileForDownload)
|
|
- if err != nil {
|
|
- t.Errorf("open file error: %v", err)
|
|
- }
|
|
- defer tmpFile.Close()
|
|
- type args struct {
|
|
- req *pb.UpdateRequest
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- want string
|
|
- wantErr bool
|
|
- }{
|
|
- {name: "errornil", args: args{&pb.UpdateRequest{Certs: &pb.CertsInfo{}}}, want: "", wantErr: true},
|
|
- {name: "error response", args: args{&pb.UpdateRequest{ImageUrl: "http://www.openeuler.abc", FlagSafe: true, Certs: &pb.CertsInfo{}}}, want: "", wantErr: true},
|
|
- {
|
|
- name: "normal",
|
|
- args: args{
|
|
- req: &pb.UpdateRequest{
|
|
- ImageUrl: "http://www.openeuler.org/zh/",
|
|
- FlagSafe: true,
|
|
- Certs: &pb.CertsInfo{},
|
|
- },
|
|
- },
|
|
- want: tmpFileForDownload,
|
|
- wantErr: false,
|
|
- },
|
|
- {
|
|
- name: "disk space not enough",
|
|
- args: args{
|
|
- req: &pb.UpdateRequest{
|
|
- ImageUrl: "http://www.openeuler.org/zh/",
|
|
- FlagSafe: true,
|
|
- Certs: &pb.CertsInfo{},
|
|
- },
|
|
- },
|
|
- want: "",
|
|
- wantErr: true,
|
|
- },
|
|
- }
|
|
- var patchStatfs *gomonkey.Patches
|
|
- patchStatfs = gomonkey.ApplyFunc(syscall.Statfs, func(path string, stat *syscall.Statfs_t) error {
|
|
- stat.Bfree = 3000
|
|
- stat.Bsize = 4096
|
|
- return nil
|
|
- })
|
|
- defer patchStatfs.Reset()
|
|
- patchGetImageUrl := gomonkey.ApplyFuncSeq(getImageURL,
|
|
- []gomonkey.OutputCell{
|
|
- {Values: gomonkey.Params{&http.Response{}, fmt.Errorf("error")}},
|
|
- {Values: gomonkey.Params{&http.Response{StatusCode: http.StatusBadRequest, Body: io.NopCloser(strings.NewReader(""))}, nil}},
|
|
- {
|
|
- Values: gomonkey.Params{
|
|
- &http.Response{
|
|
- StatusCode: http.StatusOK,
|
|
- ContentLength: 5,
|
|
- Body: io.NopCloser(strings.NewReader("hello")),
|
|
- },
|
|
- nil,
|
|
- },
|
|
- },
|
|
- {
|
|
- Values: gomonkey.Params{
|
|
- &http.Response{
|
|
- StatusCode: http.StatusOK,
|
|
- ContentLength: 5,
|
|
- Body: io.NopCloser(strings.NewReader("hello")),
|
|
- },
|
|
- nil,
|
|
- },
|
|
- },
|
|
- },
|
|
- )
|
|
- defer patchGetImageUrl.Reset()
|
|
- patchOSCreate := gomonkey.ApplyFuncReturn(os.Create, tmpFile, nil)
|
|
- defer patchOSCreate.Reset()
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- if tt.name == "disk space not enough" {
|
|
- patchStatfs = gomonkey.ApplyFunc(syscall.Statfs, func(path string, stat *syscall.Statfs_t) error {
|
|
- stat.Bfree = 1
|
|
- stat.Bsize = 4096
|
|
- return nil
|
|
- })
|
|
- }
|
|
- got, err := download(tt.args.req)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("download() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got != tt.want {
|
|
- t.Errorf("download() got = %v, want %v", got, tt.want)
|
|
- }
|
|
- })
|
|
- }
|
|
-}
|
|
-
|
|
-func Test_checkSumMatch(t *testing.T) {
|
|
- tmpDir := t.TempDir()
|
|
- tmpFileForCheckSum := tmpDir + "/tmpFileForCheckSum"
|
|
- err := os.WriteFile(tmpFileForCheckSum, []byte("hello"), 0644)
|
|
- if err != nil {
|
|
- t.Errorf("open file error: %v", err)
|
|
- }
|
|
- type args struct {
|
|
- filePath string
|
|
- checkSum string
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- wantErr bool
|
|
- }{
|
|
- {
|
|
- name: "normal",
|
|
- args: args{filePath: tmpFileForCheckSum, checkSum: calculateChecksum("hello")},
|
|
- wantErr: false,
|
|
- },
|
|
- {name: "error", args: args{filePath: tmpFileForCheckSum, checkSum: "aaa"}, wantErr: true},
|
|
- {name: "unfound error", args: args{filePath: "", checkSum: "aaa"}, wantErr: true},
|
|
- }
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- if err := checkSumMatch(tt.args.filePath, tt.args.checkSum); (err != nil) != tt.wantErr {
|
|
- t.Errorf("checkSumMatch() error = %v, wantErr %v", err, tt.wantErr)
|
|
- }
|
|
- })
|
|
- }
|
|
-}
|
|
-
|
|
-func Test_getImageURL(t *testing.T) {
|
|
- type args struct {
|
|
- req *pb.UpdateRequest
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- want *http.Response
|
|
- wantErr bool
|
|
- }{
|
|
- {name: "httpNotSafe", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "http://www.openeuler.abc/zh/",
|
|
- FlagSafe: false,
|
|
- MTLS: false,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{}, wantErr: true},
|
|
- {name: "httpSuccess", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "http://www.openeuler.abc/zh/",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{StatusCode: http.StatusOK}, wantErr: false},
|
|
- {name: "mTLSGetSuccess", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "https://www.openeuler.abc/zh/",
|
|
- FlagSafe: true,
|
|
- MTLS: true,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{StatusCode: http.StatusOK}, wantErr: false},
|
|
- {name: "httpsGetSuccess", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "https://www.openeuler.abc/zh/",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{StatusCode: http.StatusOK}, wantErr: false},
|
|
- {name: "httpsLoadCertsError", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "https://www.openeuler.abc/zh/",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{}, wantErr: true},
|
|
- {name: "httpsMLTSLoadCertsError", args: args{req: &pb.UpdateRequest{
|
|
- ImageUrl: "https://www.openeuler.abc/zh/",
|
|
- FlagSafe: true,
|
|
- MTLS: true,
|
|
- Certs: &pb.CertsInfo{},
|
|
- }}, want: &http.Response{}, wantErr: true},
|
|
- }
|
|
- patchLoadClientCerts := gomonkey.ApplyFuncSeq(loadClientCerts, []gomonkey.OutputCell{
|
|
- {Values: gomonkey.Params{&http.Client{}, nil}},
|
|
- {Values: gomonkey.Params{&http.Client{}, fmt.Errorf("error")}},
|
|
- })
|
|
- defer patchLoadClientCerts.Reset()
|
|
- patchLoadCaCerts := gomonkey.ApplyFuncSeq(loadCaCerts, []gomonkey.OutputCell{
|
|
- {Values: gomonkey.Params{&http.Client{}, nil}},
|
|
- {Values: gomonkey.Params{&http.Client{}, fmt.Errorf("error")}},
|
|
- })
|
|
- defer patchLoadCaCerts.Reset()
|
|
- patchGet := gomonkey.ApplyFunc(http.Get, func(url string) (resp *http.Response, err error) {
|
|
- return &http.Response{StatusCode: http.StatusOK}, nil
|
|
- })
|
|
- defer patchGet.Reset()
|
|
- patchClientGet := gomonkey.ApplyMethod(reflect.TypeOf(&http.Client{}), "Get", func(_ *http.Client, url string) (resp *http.Response, err error) {
|
|
- return &http.Response{StatusCode: http.StatusOK}, nil
|
|
- })
|
|
- defer patchClientGet.Reset()
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- if tt.name == "httpSuccess" {
|
|
- patchGet := gomonkey.ApplyFuncReturn(http.Get, &http.Response{StatusCode: http.StatusOK}, nil)
|
|
- defer patchGet.Reset()
|
|
- }
|
|
- got, err := getImageURL(tt.args.req)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("getImageURL() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if !reflect.DeepEqual(got, tt.want) {
|
|
- t.Errorf("getImageURL() got = %v, want %v", got, tt.want)
|
|
- }
|
|
- })
|
|
- }
|
|
-}
|
|
-
|
|
-func Test_loadCaCerts(t *testing.T) {
|
|
- tmpDir := t.TempDir()
|
|
- caPath := tmpDir + "/fake.crt"
|
|
- createFakeCertKey(caPath, "")
|
|
- type args struct {
|
|
- caCert string
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- wantErr bool
|
|
- }{
|
|
- {
|
|
- name: "normal",
|
|
- args: args{
|
|
- caCert: caPath,
|
|
- },
|
|
- wantErr: false,
|
|
- },
|
|
- {name: "no cert", args: args{caCert: ""}, wantErr: true},
|
|
- }
|
|
- patchGetCertPath := gomonkey.ApplyFuncReturn(getCertPath, "")
|
|
- defer patchGetCertPath.Reset()
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- got, err := loadCaCerts(tt.args.caCert)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("loadCaCerts() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got == nil {
|
|
- t.Errorf("loadCaCerts() = %v", got)
|
|
- }
|
|
- })
|
|
- }
|
|
-
|
|
-}
|
|
-
|
|
-func Test_loadClientCerts(t *testing.T) {
|
|
- tmpDir := t.TempDir()
|
|
- clientCertPath := tmpDir + "/fakeClientCert.crt"
|
|
- clientKeyPath := tmpDir + "/fakeClientKey.crt"
|
|
- createFakeCertKey(clientCertPath, clientKeyPath)
|
|
- type args struct {
|
|
- caCert string
|
|
- clientCert string
|
|
- clientKey string
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- wantErr bool
|
|
- }{
|
|
- {
|
|
- name: "normal",
|
|
- args: args{
|
|
- caCert: clientCertPath, clientCert: clientCertPath, clientKey: clientKeyPath,
|
|
- },
|
|
- wantErr: false,
|
|
- },
|
|
- }
|
|
- patchGetCertPath := gomonkey.ApplyFuncReturn(getCertPath, "")
|
|
- defer patchGetCertPath.Reset()
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- got, err := loadClientCerts(tt.args.caCert, tt.args.clientCert, tt.args.clientKey)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("loadClientCerts() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got == nil {
|
|
- t.Errorf("loadClientCerts() got = %v", got)
|
|
- }
|
|
- })
|
|
- }
|
|
-}
|
|
-
|
|
-func Test_certExist(t *testing.T) {
|
|
- type args struct {
|
|
- certFile string
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- args args
|
|
- wantErr bool
|
|
- }{
|
|
- {name: "fileEmpty", args: args{certFile: ""}, wantErr: true},
|
|
- {name: "fileNotExist", args: args{certFile: "bb.txt"}, wantErr: true},
|
|
- {name: "unknow error", args: args{certFile: "cc.txt"}, wantErr: true},
|
|
- }
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- var patchStat *gomonkey.Patches
|
|
- if tt.name == "unknow error" {
|
|
- patchStat = gomonkey.ApplyFunc(os.Stat, func(name string) (fs.FileInfo, error) {
|
|
- return fs.FileInfo(nil), fmt.Errorf("error")
|
|
- })
|
|
- }
|
|
- if err := certExist(tt.args.certFile); (err != nil) != tt.wantErr {
|
|
- t.Errorf("certExist() error = %v, wantErr %v", err, tt.wantErr)
|
|
- }
|
|
- if tt.name == "unknow error" {
|
|
- patchStat.Reset()
|
|
- }
|
|
- })
|
|
- }
|
|
- defer os.RemoveAll("/etc/KubeOS/")
|
|
-}
|
|
-
|
|
-func createFakeCertKey(certPath, keyPath string) {
|
|
- privateKey, _ := rsa.GenerateKey(rand.Reader, 2048)
|
|
- template := x509.Certificate{
|
|
- SerialNumber: big.NewInt(1),
|
|
- Subject: pkix.Name{
|
|
- CommonName: "Fake Client Certificate",
|
|
- },
|
|
- NotBefore: time.Now(),
|
|
- NotAfter: time.Now().AddDate(1, 0, 0),
|
|
- KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
|
|
- ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth},
|
|
- BasicConstraintsValid: true,
|
|
- }
|
|
- certBytes, _ := x509.CreateCertificate(rand.Reader, &template, &template, &privateKey.PublicKey, privateKey)
|
|
- certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certBytes})
|
|
- keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey)})
|
|
- os.WriteFile(certPath, certPEM, 0644)
|
|
- if keyPath != "" {
|
|
- os.WriteFile(keyPath, keyPEM, 0644)
|
|
- }
|
|
-}
|
|
-
|
|
-func calculateChecksum(data string) string {
|
|
- hash := sha256.New()
|
|
- hash.Write([]byte(data))
|
|
- return hex.EncodeToString(hash.Sum(nil))
|
|
-}
|
|
-
|
|
-func Test_diskHandler_getRootfsArchive(t *testing.T) {
|
|
- type args struct {
|
|
- req *pb.UpdateRequest
|
|
- neededPath preparePath
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- d diskHandler
|
|
- args args
|
|
- want string
|
|
- wantErr bool
|
|
- }{
|
|
- {
|
|
- name: "normal", d: diskHandler{},
|
|
- args: args{req: &pb.UpdateRequest{ImageUrl: "http://www.openeuler.org/zh/"}, neededPath: preparePath{}},
|
|
- want: "/persist/update.img",
|
|
- wantErr: false,
|
|
- },
|
|
- {
|
|
- name: "error", d: diskHandler{},
|
|
- args: args{req: &pb.UpdateRequest{ImageUrl: "http://www.openeuler.org/zh/"}, neededPath: preparePath{}},
|
|
- want: "",
|
|
- wantErr: true,
|
|
- },
|
|
- }
|
|
- patchDownload := gomonkey.ApplyFuncSeq(download, []gomonkey.OutputCell{
|
|
- {Values: gomonkey.Params{"/persist/update.img", nil}},
|
|
- {Values: gomonkey.Params{"", fmt.Errorf("error")}},
|
|
- })
|
|
- defer patchDownload.Reset()
|
|
- patchCheckSumMatch := gomonkey.ApplyFuncReturn(checkSumMatch, nil)
|
|
- defer patchCheckSumMatch.Reset()
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- d := diskHandler{}
|
|
- got, err := d.getRootfsArchive(tt.args.req, tt.args.neededPath)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("diskHandler.getRootfsArchive() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got != tt.want {
|
|
- t.Errorf("diskHandler.getRootfsArchive() = %v, want %v", got, tt.want)
|
|
- }
|
|
- })
|
|
- }
|
|
-}
|
|
-
|
|
-func Test_diskHandler_downloadImage(t *testing.T) {
|
|
- type args struct {
|
|
- req *pb.UpdateRequest
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- d diskHandler
|
|
- args args
|
|
- want string
|
|
- wantErr bool
|
|
- }{
|
|
- {name: "normal", d: diskHandler{}, args: args{req: &pb.UpdateRequest{ImageUrl: "http://www.openeuler.org/zh/"}}, want: "/persist/update.img", wantErr: false},
|
|
- }
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- d := diskHandler{}
|
|
- patchGetRootfsArchive := gomonkey.ApplyPrivateMethod(reflect.TypeOf(d), "getRootfsArchive", func(_ *diskHandler, _ *pb.UpdateRequest, _ preparePath) (string, error) {
|
|
- return "/persist/update.img", nil
|
|
- })
|
|
- got, err := d.downloadImage(tt.args.req)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("diskHandler.downloadImage() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got != tt.want {
|
|
- t.Errorf("diskHandler.downloadImage() = %v, want %v", got, tt.want)
|
|
- }
|
|
- patchGetRootfsArchive.Reset()
|
|
- })
|
|
- }
|
|
-}
|
|
diff --git a/cmd/agent/server/docker_image.go b/cmd/agent/server/docker_image.go
|
|
deleted file mode 100644
|
|
index 16bcea5..0000000
|
|
--- a/cmd/agent/server/docker_image.go
|
|
+++ /dev/null
|
|
@@ -1,73 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
|
|
- * KubeOS is licensed under the Mulan PSL v2.
|
|
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
- * You may obtain a copy of Mulan PSL v2 at:
|
|
- * http://license.coscl.org.cn/MulanPSL2
|
|
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
|
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
|
- * PURPOSE.
|
|
- * See the Mulan PSL v2 for more details.
|
|
- */
|
|
-
|
|
-// Package server implements server of os-agent and listener of os-agent server. The server uses gRPC interface.
|
|
-package server
|
|
-
|
|
-import (
|
|
- "github.com/sirupsen/logrus"
|
|
-
|
|
- pb "openeuler.org/KubeOS/cmd/agent/api"
|
|
-)
|
|
-
|
|
-type dockerImageHandler struct{}
|
|
-
|
|
-func (d dockerImageHandler) downloadImage(req *pb.UpdateRequest) (string, error) {
|
|
- neededPath, err := prepareEnv()
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- if _, err = d.getRootfsArchive(req, neededPath); err != nil {
|
|
- return "", err
|
|
- }
|
|
- return createOSImage(neededPath)
|
|
-}
|
|
-
|
|
-func (d dockerImageHandler) getRootfsArchive(req *pb.UpdateRequest, neededPath preparePath) (string, error) {
|
|
- imageName := req.ContainerImage
|
|
- if err := isValidImageName(imageName); err != nil {
|
|
- return "", err
|
|
- }
|
|
- logrus.Infof("start pull %s", imageName)
|
|
- if err := runCommand("docker", "pull", imageName); err != nil {
|
|
- return "", err
|
|
- }
|
|
- if err := checkOCIImageDigestMatch("docker", imageName, req.CheckSum); err != nil {
|
|
- return "", err
|
|
- }
|
|
- containerName := "kubeos-temp"
|
|
- dockerPsCmd := "docker ps -a -f=name=" + containerName + "| awk 'NR==2' | awk '{print $1}'"
|
|
- existId, err := runCommandWithOut("bash", "-c", dockerPsCmd)
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- if existId != "" {
|
|
- logrus.Infoln("kubeos-temp container exist,start clean environment first")
|
|
- if err := runCommand("docker", "rm", existId); err != nil {
|
|
- return "", err
|
|
- }
|
|
- }
|
|
- logrus.Infof("start get rootfs")
|
|
- containerId, err := runCommandWithOut("docker", "create", "--name", containerName, imageName)
|
|
- if err != nil {
|
|
- return "", err
|
|
- }
|
|
- defer func() {
|
|
- if err := runCommand("docker", "rm", containerId); err != nil {
|
|
- logrus.Errorln("remove kubeos-temp container error", err)
|
|
- }
|
|
- }()
|
|
- if err := runCommand("docker", "cp", containerId+":/"+neededPath.rootfsFile, neededPath.updatePath); err != nil {
|
|
- return "", err
|
|
- }
|
|
- return neededPath.tarPath, nil
|
|
-}
|
|
diff --git a/cmd/agent/server/docker_image_test.go b/cmd/agent/server/docker_image_test.go
|
|
deleted file mode 100644
|
|
index 2dbf337..0000000
|
|
--- a/cmd/agent/server/docker_image_test.go
|
|
+++ /dev/null
|
|
@@ -1,118 +0,0 @@
|
|
-/*
|
|
- * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.
|
|
- * KubeOS is licensed under the Mulan PSL v2.
|
|
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
- * You may obtain a copy of Mulan PSL v2 at:
|
|
- * http://license.coscl.org.cn/MulanPSL2
|
|
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
|
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
|
- * PURPOSE.
|
|
- * See the Mulan PSL v2 for more details.
|
|
- */
|
|
-
|
|
-// Package server implements server of os-agent and listener of os-agent server. The server uses gRPC interface.
|
|
-package server
|
|
-
|
|
-import (
|
|
- "os"
|
|
- "testing"
|
|
-
|
|
- "github.com/agiledragon/gomonkey/v2"
|
|
- pb "openeuler.org/KubeOS/cmd/agent/api"
|
|
-)
|
|
-
|
|
-func Test_dockerImageHandler_downloadImage(t *testing.T) {
|
|
- type args struct {
|
|
- req *pb.UpdateRequest
|
|
- }
|
|
- tests := []struct {
|
|
- name string
|
|
- d dockerImageHandler
|
|
- args args
|
|
- want string
|
|
- wantErr bool
|
|
- }{
|
|
- {
|
|
- name: "pullImageError",
|
|
- d: dockerImageHandler{},
|
|
- args: args{
|
|
- req: &pb.UpdateRequest{ContainerImage: "testError"},
|
|
- },
|
|
- want: "",
|
|
- wantErr: true,
|
|
- },
|
|
-
|
|
- {
|
|
- name: "checkSumError",
|
|
- d: dockerImageHandler{},
|
|
- args: args{
|
|
- req: &pb.UpdateRequest{ContainerImage: "hello-world", CheckSum: "aaaaaa"},
|
|
- },
|
|
- want: "",
|
|
- wantErr: true,
|
|
- },
|
|
-
|
|
- {
|
|
- name: "normal",
|
|
- d: dockerImageHandler{},
|
|
- args: args{
|
|
- req: &pb.UpdateRequest{ContainerImage: "hello-world"},
|
|
- },
|
|
- want: "update-test/upadte.img",
|
|
- wantErr: false,
|
|
- },
|
|
- }
|
|
- patchPrepareEnv := gomonkey.ApplyFunc(prepareEnv, func() (preparePath, error) {
|
|
- return preparePath{updatePath: "update-test/",
|
|
- mountPath: "update-test/mountPath",
|
|
- tarPath: "update-test/mountPath/hello",
|
|
- imagePath: "update-test/upadte.img",
|
|
- rootfsFile: "hello"}, nil
|
|
- })
|
|
- defer patchPrepareEnv.Reset()
|
|
-
|
|
- patchCreateOSImage := gomonkey.ApplyFunc(createOSImage, func(neededPath preparePath) (string, error) {
|
|
- return "update-test/upadte.img", nil
|
|
- })
|
|
- defer patchCreateOSImage.Reset()
|
|
-
|
|
- if err := os.MkdirAll("update-test/mountPath", os.ModePerm); err != nil {
|
|
- t.Errorf("create test dir error = %v", err)
|
|
- return
|
|
- }
|
|
-
|
|
- for _, tt := range tests {
|
|
- t.Run(tt.name, func(t *testing.T) {
|
|
- if tt.name == "normal" {
|
|
- _, err := runCommandWithOut("docker", "create", "--name", "kubeos-temp", "hello-world")
|
|
- if err != nil {
|
|
- t.Errorf("Test_dockerImageHandler_getRootfsArchive create container error = %v", err)
|
|
- return
|
|
- }
|
|
- imageDigests, err := getOCIImageDigest("docker", "hello-world")
|
|
-
|
|
- if err != nil {
|
|
- t.Errorf("Test_dockerImageHandler_getRootfsArchive get oci image digests error = %v", err)
|
|
- }
|
|
- tt.args.req.CheckSum = imageDigests
|
|
- }
|
|
- d := dockerImageHandler{}
|
|
- got, err := d.downloadImage(tt.args.req)
|
|
- if (err != nil) != tt.wantErr {
|
|
- t.Errorf("dockerImageHandler.downloadImage() error = %v, wantErr %v", err, tt.wantErr)
|
|
- return
|
|
- }
|
|
- if got != tt.want {
|
|
- t.Errorf("dockerImageHandler.downloadImage() = %v, want %v", got, tt.want)
|
|
- }
|
|
- })
|
|
- }
|
|
- defer func() {
|
|
- if err := runCommand("docker", "rmi", "hello-world"); err != nil {
|
|
- t.Errorf("remove kubeos-temp container error = %v", err)
|
|
- }
|
|
- if err := os.RemoveAll("update-test"); err != nil {
|
|
- t.Errorf("remove update-test error = %v", err)
|
|
- }
|
|
- }()
|
|
-}
|
|
diff --git a/cmd/agent/server/server.go b/cmd/agent/server/server.go
|
|
index f8cbb41..23ab1c6 100644
|
|
--- a/cmd/agent/server/server.go
|
|
+++ b/cmd/agent/server/server.go
|
|
@@ -102,12 +102,8 @@ func (s *Server) update(req *pb.UpdateRequest) error {
|
|
action := req.ImageType
|
|
var handler imageDownload
|
|
switch action {
|
|
- case "docker":
|
|
- handler = dockerImageHandler{}
|
|
case "containerd":
|
|
handler = conImageHandler{}
|
|
- case "disk":
|
|
- handler = diskHandler{}
|
|
default:
|
|
return fmt.Errorf("image type %s cannot be recognized", action)
|
|
}
|
|
@@ -180,7 +176,3 @@ func (s *Server) reboot() error {
|
|
}
|
|
return syscall.Reboot(syscall.LINUX_REBOOT_CMD_RESTART)
|
|
}
|
|
-
|
|
-func getCertPath() string {
|
|
- return certPath
|
|
-}
|
|
diff --git a/cmd/agent/server/server_test.go b/cmd/agent/server/server_test.go
|
|
index 15b6f5e..22ed38c 100644
|
|
--- a/cmd/agent/server/server_test.go
|
|
+++ b/cmd/agent/server/server_test.go
|
|
@@ -87,10 +87,10 @@ func TestServerUpdate(t *testing.T) {
|
|
wantErr bool
|
|
}{
|
|
{name: "error", fields: fields{UnimplementedOSServer: pb.UnimplementedOSServer{}, disableReboot: true},
|
|
- args: args{in0: context.Background(), req: &pb.UpdateRequest{Version: "test", Certs: &pb.CertsInfo{}}},
|
|
+ args: args{in0: context.Background(), req: &pb.UpdateRequest{Version: "test"}},
|
|
want: &pb.UpdateResponse{}, wantErr: true},
|
|
{name: "success", fields: fields{UnimplementedOSServer: pb.UnimplementedOSServer{}, disableReboot: true},
|
|
- args: args{in0: context.Background(), req: &pb.UpdateRequest{Version: "test", Certs: &pb.CertsInfo{}, ImageType: "containerd"}},
|
|
+ args: args{in0: context.Background(), req: &pb.UpdateRequest{Version: "test", ImageType: "containerd"}},
|
|
want: &pb.UpdateResponse{}, wantErr: false},
|
|
}
|
|
patchRootfsDisks := gomonkey.ApplyFuncReturn(getRootfsDisks, "/dev/sda2", "/dev/sda3", nil)
|
|
@@ -197,22 +197,9 @@ func TestServerupdate(t *testing.T) {
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
- {name: "errortype", args: args{&pb.UpdateRequest{Certs: &pb.CertsInfo{}}}, wantErr: true},
|
|
-
|
|
- {name: "errordisk", args: args{&pb.UpdateRequest{
|
|
- ImageUrl: "http://w3.huawei.com/",
|
|
- FlagSafe: true,
|
|
- CheckSum: "",
|
|
- ImageType: "disk",
|
|
- Certs: &pb.CertsInfo{},
|
|
- }},
|
|
- wantErr: true},
|
|
- {name: "errordocker", args: args{&pb.UpdateRequest{
|
|
- ContainerImage: "",
|
|
- ImageType: "docker",
|
|
- Certs: &pb.CertsInfo{},
|
|
- }},
|
|
- wantErr: true},
|
|
+ {name: "errortype", args: args{&pb.UpdateRequest{}}, wantErr: true},
|
|
+ {name: "errordisk", args: args{&pb.UpdateRequest{CheckSum: "", ImageType: "disk"}}, wantErr: true},
|
|
+ {name: "errordocker", args: args{&pb.UpdateRequest{ContainerImage: "", ImageType: "docker"}}, wantErr: true},
|
|
}
|
|
for _, tt := range tests {
|
|
if tt.name == "errordisk" {
|
|
diff --git a/cmd/operator/controllers/os_controller_test.go b/cmd/operator/controllers/os_controller_test.go
|
|
index 6cc2760..66aa1a4 100644
|
|
--- a/cmd/operator/controllers/os_controller_test.go
|
|
+++ b/cmd/operator/controllers/os_controller_test.go
|
|
@@ -242,8 +242,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "rollback",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v1",
|
|
@@ -420,8 +418,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "config",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
@@ -512,8 +508,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Configs: []upgradev1.SysConfig{},
|
|
@@ -686,8 +680,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
diff --git a/cmd/proxy/controllers/os_controller.go b/cmd/proxy/controllers/os_controller.go
|
|
index b8d0f80..d7da343 100644
|
|
--- a/cmd/proxy/controllers/os_controller.go
|
|
+++ b/cmd/proxy/controllers/os_controller.go
|
|
@@ -211,13 +211,7 @@ func (r *OSReconciler) upgradeNode(ctx context.Context, osCr *upgradev1.OS, node
|
|
case "upgrade":
|
|
version := osVersionSpec
|
|
downloadInfo := &agentclient.DownloadInfo{
|
|
- ImageURL: osCr.Spec.ImageURL,
|
|
- FlagSafe: osCr.Spec.FlagSafe,
|
|
CheckSum: osCr.Spec.CheckSum,
|
|
- CaCert: osCr.Spec.CaCert,
|
|
- ClientCert: osCr.Spec.ClientCert,
|
|
- ClientKey: osCr.Spec.ClientKey,
|
|
- MTLS: osCr.Spec.MTLS,
|
|
ImageType: osCr.Spec.ImageType,
|
|
ContainerImage: osCr.Spec.ContainerImage,
|
|
}
|
|
diff --git a/cmd/proxy/controllers/os_controller_test.go b/cmd/proxy/controllers/os_controller_test.go
|
|
index 14b6b66..847f22e 100644
|
|
--- a/cmd/proxy/controllers/os_controller_test.go
|
|
+++ b/cmd/proxy/controllers/os_controller_test.go
|
|
@@ -173,8 +173,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "rollback",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{Configs: []upgradev1.SysConfig{}},
|
|
UpgradeConfigs: upgradev1.SysConfigs{Configs: []upgradev1.SysConfig{}},
|
|
@@ -333,8 +331,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "config",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
@@ -476,8 +472,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: false,
|
|
SysConfigs: upgradev1.SysConfigs{Configs: []upgradev1.SysConfig{}},
|
|
UpgradeConfigs: upgradev1.SysConfigs{
|
|
@@ -564,8 +558,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "config",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v1",
|
|
@@ -709,8 +701,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "config",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v1",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
@@ -875,8 +865,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{Configs: []upgradev1.SysConfig{}},
|
|
UpgradeConfigs: upgradev1.SysConfigs{
|
|
@@ -1071,8 +1059,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
@@ -1232,8 +1218,6 @@ var _ = Describe("OsController", func() {
|
|
OpsType: "upgrade",
|
|
MaxUnavailable: 3,
|
|
OSVersion: "KubeOS v2",
|
|
- FlagSafe: true,
|
|
- MTLS: false,
|
|
EvictPodForce: true,
|
|
SysConfigs: upgradev1.SysConfigs{
|
|
Version: "v2",
|
|
diff --git a/docs/example/config/crd/upgrade.openeuler.org_os.yaml b/docs/example/config/crd/upgrade.openeuler.org_os.yaml
|
|
index 3bb1333..8fadb2c 100644
|
|
--- a/docs/example/config/crd/upgrade.openeuler.org_os.yaml
|
|
+++ b/docs/example/config/crd/upgrade.openeuler.org_os.yaml
|
|
@@ -32,28 +32,16 @@ spec:
|
|
spec:
|
|
description: OSSpec defines the desired state of OS
|
|
properties:
|
|
- cacert:
|
|
- type: string
|
|
checksum:
|
|
type: string
|
|
- clientcert:
|
|
- type: string
|
|
- clientkey:
|
|
- type: string
|
|
containerimage:
|
|
type: string
|
|
evictpodforce:
|
|
type: boolean
|
|
- flagSafe:
|
|
- type: boolean
|
|
imagetype:
|
|
type: string
|
|
- imageurl:
|
|
- type: string
|
|
maxunavailable:
|
|
type: integer
|
|
- mtls:
|
|
- type: boolean
|
|
opstype:
|
|
type: string
|
|
osversion:
|
|
@@ -118,11 +106,8 @@ spec:
|
|
- checksum
|
|
- containerimage
|
|
- evictpodforce
|
|
- - flagSafe
|
|
- imagetype
|
|
- - imageurl
|
|
- maxunavailable
|
|
- - mtls
|
|
- opstype
|
|
- osversion
|
|
type: object
|
|
diff --git a/pkg/agentclient/connection.go b/pkg/agentclient/connection.go
|
|
index 7b53a14..ad31da4 100644
|
|
--- a/pkg/agentclient/connection.go
|
|
+++ b/pkg/agentclient/connection.go
|
|
@@ -32,13 +32,7 @@ type Client struct {
|
|
|
|
// DownloadInfo contains the information required for image download
|
|
type DownloadInfo struct {
|
|
- ImageURL string
|
|
- FlagSafe bool
|
|
CheckSum string
|
|
- CaCert string
|
|
- ClientCert string
|
|
- ClientKey string
|
|
- MTLS bool
|
|
ImageType string
|
|
ContainerImage string
|
|
}
|
|
@@ -83,19 +77,10 @@ func New(sockAddr string) (*Client, error) {
|
|
|
|
// UpdateSpec send update requests to the server in os-agent
|
|
func (c *Client) UpdateSpec(version string, downloadInfo *DownloadInfo) error {
|
|
- certs := &pb.CertsInfo{
|
|
- CaCaert: downloadInfo.CaCert,
|
|
- ClientCert: downloadInfo.ClientCert,
|
|
- ClientKey: downloadInfo.ClientKey,
|
|
- }
|
|
_, err := c.client.Update(context.Background(),
|
|
&pb.UpdateRequest{
|
|
Version: version,
|
|
- ImageUrl: downloadInfo.ImageURL,
|
|
- FlagSafe: downloadInfo.FlagSafe,
|
|
CheckSum: downloadInfo.CheckSum,
|
|
- MTLS: downloadInfo.MTLS,
|
|
- Certs: certs,
|
|
ImageType: downloadInfo.ImageType,
|
|
ContainerImage: downloadInfo.ContainerImage,
|
|
})
|
|
--
|
|
2.39.0
|
|
|