@@ -874,17 +874,11 @@ func SerializeServer(s models.Server, opt *options.ConfigurationOptions) types.S
874
874
}
875
875
876
876
func GetServerByName (name string , parentType string , parentName string , p parser.Parser ) (* models.Server , int ) {
877
- servers , err := ParseServers (parentType , parentName , p )
877
+ server , i , err := FindServers (parentType , parentName , name , p )
878
878
if err != nil {
879
- return nil , 0
879
+ return nil , i
880
880
}
881
-
882
- for i , s := range servers {
883
- if s .Name == name {
884
- return s , i
885
- }
886
- }
887
- return nil , 0
881
+ return server , i
888
882
}
889
883
890
884
func sectionType (parentType string ) parser.Section {
@@ -899,3 +893,26 @@ func sectionType(parentType string) parser.Section {
899
893
}
900
894
return sectionType
901
895
}
896
+
897
+ func FindServers (parentType string , parentName string , serverName string , p parser.Parser ) (* models.Server , int , error ) {
898
+ data , err := p .Get (sectionType (parentType ), parentName , "server" , false )
899
+ if err != nil {
900
+ if errors .Is (err , parser_errors .ErrFetch ) {
901
+ return nil , 0 , nil
902
+ }
903
+ return nil , 0 , err
904
+ }
905
+
906
+ ondiskServers , ok := data .([]types.Server )
907
+ if ! ok {
908
+ return nil , 0 , misc .CreateTypeAssertError ("server" )
909
+ }
910
+
911
+ for i , ondiskServer := range ondiskServers {
912
+ if ondiskServer .Name == serverName {
913
+ return ParseServer (ondiskServer ), i , nil
914
+ }
915
+ }
916
+
917
+ return nil , 0 , nil
918
+ }
0 commit comments