Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢捷峰
discovery
Commits
60988062
Commit
60988062
authored
Jul 17, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加图形化灰度发布功能
parent
e57a7669
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
248 additions
and
0 deletions
+248
-0
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/controller/ServiceController.java
+7
-0
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/entity/RouterEntity.java
+86
-0
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/workspace/RouterTopology.java
+139
-0
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/workspace/ServiceTopology.java
+16
-0
No files found.
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/controller/ServiceController.java
View file @
60988062
...
...
@@ -17,6 +17,7 @@ import org.springframework.web.client.RestTemplate;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.nepxion.discovery.console.desktop.context.PropertiesContext
;
import
com.nepxion.discovery.console.desktop.entity.InstanceEntity
;
import
com.nepxion.discovery.console.desktop.entity.RouterEntity
;
import
com.nepxion.discovery.console.desktop.serializer.JacksonSerializer
;
public
class
ServiceController
{
...
...
@@ -49,6 +50,12 @@ public class ServiceController {
return
restTemplate
.
getForEntity
(
url
,
List
.
class
).
getBody
();
}
public
static
RouterEntity
routes
(
InstanceEntity
instance
,
String
routeServiceIds
)
{
String
url
=
"http://"
+
instance
.
getHost
()
+
":"
+
instance
.
getPort
()
+
"/router/routes"
;
return
restTemplate
.
postForEntity
(
url
,
routeServiceIds
,
RouterEntity
.
class
).
getBody
();
}
public
static
String
getUrl
()
{
String
url
=
PropertiesContext
.
getProperties
().
getString
(
"url"
);
if
(!
url
.
endsWith
(
"/"
))
{
...
...
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/entity/RouterEntity.java
0 → 100644
View file @
60988062
package
com
.
nepxion
.
discovery
.
console
.
desktop
.
entity
;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
RouterEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
4480475963615166799L
;
private
String
serviceId
;
private
String
version
;
private
String
host
;
private
int
port
;
private
List
<
RouterEntity
>
nexts
=
new
ArrayList
<
RouterEntity
>();
public
String
getServiceId
()
{
return
serviceId
;
}
public
void
setServiceId
(
String
serviceId
)
{
this
.
serviceId
=
serviceId
;
}
public
String
getVersion
()
{
return
version
;
}
public
void
setVersion
(
String
version
)
{
this
.
version
=
version
;
}
public
String
getHost
()
{
return
host
;
}
public
void
setHost
(
String
host
)
{
this
.
host
=
host
;
}
public
int
getPort
()
{
return
port
;
}
public
void
setPort
(
int
port
)
{
this
.
port
=
port
;
}
public
List
<
RouterEntity
>
getNexts
()
{
return
nexts
;
}
public
void
setNexts
(
List
<
RouterEntity
>
nexts
)
{
this
.
nexts
=
nexts
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
}
}
\ No newline at end of file
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/workspace/RouterTopology.java
0 → 100644
View file @
60988062
package
com
.
nepxion
.
discovery
.
console
.
desktop
.
workspace
;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import
twaver.BlinkingRule
;
import
twaver.Element
;
import
twaver.Generator
;
import
twaver.TWaverConst
;
import
java.awt.Color
;
import
java.util.List
;
import
javax.swing.Box
;
import
javax.swing.JToolBar
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
com.nepxion.cots.twaver.element.TLink
;
import
com.nepxion.cots.twaver.element.TNode
;
import
com.nepxion.cots.twaver.graph.TGraphControlBar
;
import
com.nepxion.cots.twaver.graph.TGraphManager
;
import
com.nepxion.discovery.console.desktop.entity.RouterEntity
;
import
com.nepxion.discovery.console.desktop.workspace.topology.AbstractTopology
;
import
com.nepxion.discovery.console.desktop.workspace.topology.TopologyEntity
;
import
com.nepxion.discovery.console.desktop.workspace.topology.TopologyEntityType
;
import
com.nepxion.swing.button.ButtonManager
;
import
com.nepxion.swing.button.JBasicToggleButton
;
public
class
RouterTopology
extends
AbstractTopology
{
private
static
final
long
serialVersionUID
=
1L
;
private
int
nodeStartX
=
300
;
private
int
nodeStartY
=
150
;
private
int
nodeHorizontalGap
=
200
;
private
int
nodeVerticalGap
=
0
;
private
TopologyEntity
serviceNodeEntity
=
new
TopologyEntity
(
TopologyEntityType
.
SERVICE
,
true
,
true
);
public
RouterTopology
()
{
initializeToolBar
();
initializeTopology
();
}
private
void
initializeToolBar
()
{
JToolBar
toolBar
=
getGraph
().
getToolbar
();
toolBar
.
addSeparator
();
toolBar
.
add
(
Box
.
createHorizontalStrut
(
5
));
ButtonManager
.
updateUI
(
toolBar
);
}
private
void
initializeTopology
()
{
graph
.
setBlinkingRule
(
new
BlinkingRule
()
{
public
boolean
isBodyBlinking
(
Element
element
)
{
return
element
.
getAlarmState
().
getHighestNativeAlarmSeverity
()
!=
null
||
element
.
getClientProperty
(
TWaverConst
.
PROPERTYNAME_RENDER_COLOR
)
!=
null
;
}
public
boolean
isOutlineBlinking
(
Element
element
)
{
return
element
.
getAlarmState
().
getPropagateSeverity
()
!=
null
||
element
.
getClientProperty
(
TWaverConst
.
PROPERTYNAME_STATE_OUTLINE_COLOR
)
!=
null
;
}
});
graph
.
setElementStateOutlineColorGenerator
(
new
Generator
()
{
public
Object
generate
(
Object
object
)
{
return
null
;
}
});
TGraphControlBar
graphControlBar
=
(
TGraphControlBar
)
graph
.
getControlBarInternalFrame
().
getContent
();
JBasicToggleButton
toggleButton
=
(
JBasicToggleButton
)
graphControlBar
.
getViewToolBar
().
getViewOutlook
().
getComponent
(
10
);
toggleButton
.
setSelected
(
true
);
TGraphManager
.
layout
(
graph
);
}
public
void
route
(
RouterEntity
routerEntity
)
{
dataBox
.
clear
();
int
index
=
0
;
TNode
node
=
addNode
(
routerEntity
,
index
);
index
++;
route
(
routerEntity
,
node
,
index
);
}
private
void
route
(
RouterEntity
routerEntity
,
TNode
node
,
int
index
)
{
List
<
RouterEntity
>
nexts
=
routerEntity
.
getNexts
();
if
(
CollectionUtils
.
isNotEmpty
(
nexts
))
{
for
(
RouterEntity
next
:
nexts
)
{
TNode
nextNode
=
addNode
(
next
,
index
);
addLink
(
node
,
nextNode
);
index
++;
route
(
next
,
nextNode
,
index
);
}
}
}
private
String
getNodeName
(
RouterEntity
routerEntity
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
routerEntity
.
getServiceId
()).
append
(
"\n"
);
stringBuilder
.
append
(
routerEntity
.
getHost
()).
append
(
":"
).
append
(
routerEntity
.
getPort
());
if
(
StringUtils
.
isNotEmpty
(
routerEntity
.
getVersion
()))
{
stringBuilder
.
append
(
"\n [V"
).
append
(
routerEntity
.
getVersion
()).
append
(
"]"
);
}
return
ButtonManager
.
getHtmlText
(
stringBuilder
.
toString
());
}
private
TNode
addNode
(
RouterEntity
routerEntity
,
int
index
)
{
String
nodeName
=
getNodeName
(
routerEntity
);
TNode
node
=
createNode
(
nodeName
,
serviceNodeEntity
,
index
,
nodeStartX
,
nodeStartY
,
nodeHorizontalGap
,
nodeVerticalGap
);
node
.
setUserObject
(
routerEntity
);
dataBox
.
addElement
(
node
);
return
node
;
}
private
void
addLink
(
TNode
fromNode
,
TNode
toNode
)
{
TLink
link
=
createLink
(
fromNode
,
toNode
,
true
);
link
.
putLinkToArrowColor
(
Color
.
yellow
);
dataBox
.
addElement
(
link
);
}
}
\ No newline at end of file
discovery-console-desktop/src/main/java/com/nepxion/discovery/console/desktop/workspace/ServiceTopology.java
View file @
60988062
...
...
@@ -37,6 +37,7 @@ import com.nepxion.cots.twaver.element.TNode;
import
com.nepxion.cots.twaver.graph.TGraphManager
;
import
com.nepxion.discovery.console.desktop.controller.ServiceController
;
import
com.nepxion.discovery.console.desktop.entity.InstanceEntity
;
import
com.nepxion.discovery.console.desktop.entity.RouterEntity
;
import
com.nepxion.discovery.console.desktop.icon.ConsoleIconFactory
;
import
com.nepxion.discovery.console.desktop.locale.ConsoleLocale
;
import
com.nepxion.discovery.console.desktop.workspace.common.UIUtil
;
...
...
@@ -79,6 +80,8 @@ public class ServiceTopology extends AbstractTopology {
private
Map
<
String
,
List
<
InstanceEntity
>>
instanceMap
;
private
RouterTopology
routerTopology
;
public
ServiceTopology
()
{
initializeToolBar
();
initializeTopology
();
...
...
@@ -346,6 +349,19 @@ public class ServiceTopology extends AbstractTopology {
return
;
}
InstanceEntity
instance
=
(
InstanceEntity
)
node
.
getUserObject
();
RouterEntity
routerEntity
=
ServiceController
.
routes
(
instance
,
"discovery-springcloud-example-a;discovery-springcloud-example-b;discovery-springcloud-example-c"
);
if
(
routerTopology
==
null
)
{
routerTopology
=
new
RouterTopology
();
routerTopology
.
setPreferredSize
(
new
Dimension
(
1200
,
900
));
}
routerTopology
.
route
(
routerEntity
);
JBasicOptionPane
.
showOptionDialog
(
HandleManager
.
getFrame
(
ServiceTopology
.
this
),
routerTopology
,
"路由信息"
,
JBasicOptionPane
.
DEFAULT_OPTION
,
JBasicOptionPane
.
PLAIN_MESSAGE
,
ConsoleIconFactory
.
getSwingIcon
(
"banner/navigator.png"
),
new
Object
[]
{
SwingLocale
.
getString
(
"close"
)
},
null
,
true
);
}
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment