MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / install

Method install

internal/nodes/upgrade_manager.go:86–201  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

84}
85
86func (this *UpgradeManager) install() error {
87 // 检查是否有已下载但未安装成功的
88 if len(this.lastFile) > 0 {
89 _, err := os.Stat(this.lastFile)
90 if err == nil {
91 err = this.unzip(this.lastFile)
92 if err != nil {
93 return err
94 }
95 this.lastFile = ""
96 return nil
97 }
98 }
99
100 // 创建临时文件
101 var dir = Tea.Root + "/tmp"
102 _, err := os.Stat(dir)
103 if err != nil {
104 if os.IsNotExist(err) {
105 err = os.Mkdir(dir, 0777)
106 if err != nil {
107 return err
108 }
109 } else {
110 return err
111 }
112 }
113
114 remotelogs.Println("UPGRADE_MANAGER", "downloading new node ...")
115
116 var path = dir + "/edge-node.tmp"
117 fp, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0777)
118 if err != nil {
119 return err
120 }
121 isClosed := false
122 defer func() {
123 if !isClosed {
124 _ = fp.Close()
125 }
126 }()
127
128 client, err := rpc.SharedRPC()
129 if err != nil {
130 return err
131 }
132
133 var offset int64
134 var h = md5.New()
135 var sum = ""
136 var filename = ""
137 for {
138 resp, err := client.NodeRPC.DownloadNodeInstallationFile(client.Context(), &pb.DownloadNodeInstallationFileRequest{
139 Os: runtime.GOOS,
140 Arch: runtime.GOARCH,
141 ChunkOffset: offset,
142 })
143 if err != nil {

Callers 2

StartMethod · 0.95

Calls 9

unzipMethod · 0.95
PrintlnFunction · 0.92
SharedRPCFunction · 0.92
ContextMethod · 0.80
StatMethod · 0.65
CloseMethod · 0.65
WriteMethod · 0.65
RemoveMethod · 0.65
SumMethod · 0.45

Tested by 1