1
1
package xyz .erupt .cloud .server .controller ;
2
2
3
+ import cn .hutool .http .HttpResponse ;
4
+ import cn .hutool .http .HttpUtil ;
5
+ import com .google .gson .reflect .TypeToken ;
3
6
import org .springframework .web .bind .annotation .*;
7
+ import xyz .erupt .cloud .common .consts .CloudCommonConst ;
4
8
import xyz .erupt .cloud .common .consts .CloudRestApiConst ;
5
9
import xyz .erupt .cloud .server .base .CloudServerConst ;
10
+ import xyz .erupt .cloud .server .node .MetaNode ;
6
11
import xyz .erupt .cloud .server .node .NodeManager ;
12
+ import xyz .erupt .core .config .GsonFactory ;
13
+ import xyz .erupt .core .constant .EruptConst ;
14
+ import xyz .erupt .core .constant .EruptMutualConst ;
15
+ import xyz .erupt .core .constant .EruptRestPath ;
16
+ import xyz .erupt .core .exception .EruptWebApiRuntimeException ;
17
+ import xyz .erupt .core .log .LogMessage ;
7
18
import xyz .erupt .upms .annotation .EruptMenuAuth ;
19
+ import xyz .erupt .upms .service .EruptContextService ;
8
20
9
21
import javax .annotation .Resource ;
22
+ import javax .servlet .http .HttpServletResponse ;
23
+ import java .util .List ;
10
24
11
25
/**
12
26
* @author YuePeng
@@ -19,11 +33,35 @@ public class EruptNodeController {
19
33
@ Resource
20
34
private NodeManager nodeManager ;
21
35
36
+ @ Resource
37
+ private EruptContextService eruptContextService ;
38
+
22
39
//移除实例
23
40
@ GetMapping ("/remove-instance/{nodeName}" )
24
41
@ EruptMenuAuth (CloudServerConst .CLOUD_NODE_MANAGER_PERMISSION )
25
42
public void removeInstance (@ PathVariable String nodeName , @ RequestParam ("instance" ) String instance ) {
26
43
nodeManager .removeNodeInstance (nodeName , instance );
27
44
}
28
45
46
+ //node节点日志
47
+ @ GetMapping ("/erupt-cloud-node-log" )
48
+ @ EruptMenuAuth (CloudServerConst .ERUPT_CLOUD_NODE_LOG )
49
+ public List <LogMessage > eruptNodeLog (@ RequestParam String nodeName , @ RequestParam Long size , @ RequestParam (required = false ) Long offset ,
50
+ HttpServletResponse httpServletResponse ) {
51
+ MetaNode metaNode = nodeManager .getNode (nodeName );
52
+ if (null == metaNode || metaNode .getLocations ().isEmpty ())
53
+ throw new EruptWebApiRuntimeException ("'" + nodeName + "' node not ready" );
54
+ HttpResponse httpResponse = HttpUtil .createGet (metaNode .getLocations ().iterator ().next () + EruptRestPath .ERUPT_TOOL + "/" + EruptConst .ERUPT_LOG )
55
+ .header (EruptMutualConst .TOKEN , eruptContextService .getCurrentToken ()).header (CloudCommonConst .HEADER_ACCESS_TOKEN , metaNode .getAccessToken ())
56
+ .form ("size" , size ).form ("offset" , offset ).execute ();
57
+ if (httpResponse .getStatus () == 200 ) {
58
+ return GsonFactory .getGson ().fromJson (httpResponse .body (), new TypeToken <List <LogMessage >>() {
59
+ }.getType ()
60
+ );
61
+ } else {
62
+ httpServletResponse .setStatus (httpResponse .getStatus ());
63
+ return null ;
64
+ }
65
+ }
66
+
29
67
}
0 commit comments