Skip to content

Commit

Permalink
add rules to detect eureka and config server connection string in azu…
Browse files Browse the repository at this point in the history
…re (#954)

* add rules to detect eureka and config server connection string in azure

* update rule name

* update tag to Spring Cloud Config

* update test

---------

Co-authored-by: kaiqianyang <kaiqianyang@microsoftcom>
  • Loading branch information
KaiqianYang and kaiqianyang committed May 23, 2023
1 parent 7dc4670 commit 124a9d6
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0"?>
<ruleset id="spring-boot-to-azure-config-server"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
<description>
This ruleset identifies Spring Cloud config server configurations in Spring Boot applications.
</description>
<dependencies>
<addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final" />
</dependencies>
<sourceTechnology id="springboot"/>
<targetTechnology id="azure-spring-apps"/>
<targetTechnology id="azure-appservice"/>
<targetTechnology id="azure-aks"/>
<targetTechnology id="azure-container-apps"/>
<tag>Spring Cloud Config</tag>
</metadata>
<rules>
<rule id="spring-boot-to-azure-config-server-01000">
<when>
<filecontent filename="application{*}.{extensions}" pattern="{pattern}"/>
</when>
<perform>
<hint title="Explicit Config Server connection info found in configuration file" category-id="information" effort="0">
<message>
<![CDATA[
The application uses a Spring Cloud Config Server connection string.
If you are migrating to Azure Spring Apps, the connection info of Config Server will be injected upon app start.
Please remove the connection info from your configuration file. Configure the Config Server after creating an Azure Spring Apps instance.
]]>
</message>
<link title="Remove restricted configurations" href="http://aka.ms/spring-cloud-to-asa?toc=%2Fazure%2Fspring-apps%2Ftoc.json&amp;bc=%2Fazure%2Fspring-apps%2Fbreadcrumb%2Ftoc.json&amp;pivots=sc-standard-tier#remove-restricted-configurations"/>
<link title="Prepare the Spring Cloud Config server" href="http://aka.ms/spring-cloud-to-asa?toc=%2Fazure%2Fspring-apps%2Ftoc.json&amp;bc=%2Fazure%2Fspring-apps%2Fbreadcrumb%2Ftoc.json&amp;pivots=sc-standard-tier#prepare-the-spring-cloud-config-server"/>
<tag>Spring Cloud Config</tag>
</hint>
<technology-tag level="INFORMATIONAL">Spring Cloud Config</technology-tag>
</perform>
<where param="extensions">
<matches pattern="(properties|yaml|yml)"/>
</where>
<where param="pattern">
<matches pattern="spring\.config\.import|spring\.cloud\.config\.uri"/>
</where>
</rule>
</rules>
</ruleset>
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,33 @@
<technology-tag level="INFORMATIONAL">Eureka</technology-tag>
</perform>
</rule>
<rule id="spring-boot-to-azure-eureka-02000">
<when>
<filecontent filename="application{*}.{extensions}" pattern="{pattern}"/>
</when>
<perform>
<hint title="Explicit eureka connection info found in configuration file" category-id="information" effort="0">
<message>
<![CDATA[
The application uses an eureka connection string.
Azure Spring Apps will host eureka server for you.
Eureka connection configurations will be injected automatically by ASA, if you put these configurations in your Config Server, please remove them.
]]>
</message>
<link title="Azure Spring Apps - Enable Service Registration" href="https://learn.microsoft.com/azure/spring-apps/how-to-service-registration?pivots=programming-language-java"/>
<link title="Azure Spring Apps - Access Config Server and Service Registry" href="https://learn.microsoft.com/azure/spring-apps/how-to-access-data-plane-azure-ad-rbac"/>
<link title="Restricted configurations" href="http://aka.ms/spring-cloud-to-asa?pivots=sc-standard-tier#remove-restricted-configurations"/>
<tag>eureka</tag>
</hint>
<technology-tag level="INFORMATIONAL">Eureka</technology-tag>
</perform>
<where param="extensions">
<matches pattern="(properties|yaml|yml)"/>
</where>
<where param="pattern">
<matches pattern="eureka\.client\.(service-url|serviceUrl)"/>
</where>
</rule>
</rules>
</ruleset>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=foo
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
spring.config.import=file://${user.home}/spring-cloud-config-repo
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
spring.config.import: file://${user.home}/spring-cloud-config-repo
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka/
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eureka.client.service-url.defaultZone: http://localhost:8761/eureka/
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<ruletest id="spring-boot-to-azure-config-server-test" xmlns="http://windup.jboss.org/schema/jboss-ruleset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<testDataPath>data/spring-boot-to-azure-config-server</testDataPath>
<rulePath>../spring-boot-to-azure-config-server.windup.xml</rulePath>
<ruleset>
<rules>
<rule id="spring-boot-to-azure-config-server-test-01000">
<when>
<not>
<iterable-filter size="3">
<hint-exists message="The application uses a Spring Cloud Config Server connection string"/>
</iterable-filter>
</not>
</when>
<perform>
<fail message="Spring Cloud config server connection info hint was not found!"/>
</perform>
</rule>
</rules>
</ruleset>
</ruletest>
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,18 @@
<fail message="Eureka hint was not found!" />
</perform>
</rule>
<rule id="spring-boot-to-azure-eureka-test-02000">
<when>
<not>
<iterable-filter size="2">
<hint-exists message="The application uses an eureka connection string." />
</iterable-filter>
</not>
</when>
<perform>
<fail message="Eureka connection string hint was not found!" />
</perform>
</rule>
</rules>
</ruleset>
</ruletest>

0 comments on commit 124a9d6

Please sign in to comment.