@@ -56,6 +56,7 @@ func init() {
5656// DataplaneResource defines the interface for accessing dataplane resources
5757type DataplaneResource interface {
5858 Route () RouteResource
59+ Upstream () UpstreamResource
5960 Service () ServiceResource
6061 SSL () SSLResource
6162 Consumer () ConsumerResource
@@ -76,6 +77,11 @@ type SSLResource interface {
7677 List (ctx context.Context ) ([]* adctypes.SSL , error )
7778}
7879
80+ // UpstreamResource defines the interface for upstream resources
81+ type UpstreamResource interface {
82+ List (ctx context.Context ) ([]* adctypes.Upstream , error )
83+ }
84+
7985// ConsumerResource defines the interface for consumer resources
8086type ConsumerResource interface {
8187 List (ctx context.Context ) ([]* adctypes.Consumer , error )
@@ -117,8 +123,11 @@ func (a *adcDataplaneResource) Consumer() ConsumerResource {
117123 return & adcConsumerResource {a }
118124}
119125
126+ func (a * adcDataplaneResource ) Upstream () UpstreamResource {
127+ return & adcUpstreamResource {a }
128+ }
129+
120130func init () {
121- // dashboard sdk log
122131 l , err := log .NewLogger (
123132 log .WithOutputFile ("stderr" ),
124133 log .WithLogLevel ("debug" ),
@@ -192,14 +201,7 @@ func (a *adcDataplaneResource) dumpResources(ctx context.Context) (*translator.T
192201 return nil , err
193202 }
194203
195- // Extract routes from services
196- var routes []* adctypes.Route
197- for _ , service := range resources .Services {
198- routes = append (routes , service .Routes ... )
199- }
200-
201204 result := & translator.TranslateResult {
202- Routes : routes ,
203205 Services : resources .Services ,
204206 SSL : resources .SSLs ,
205207 GlobalRules : resources .GlobalRules ,
@@ -220,7 +222,11 @@ func (r *adcRouteResource) List(ctx context.Context) ([]*adctypes.Route, error)
220222 if err != nil {
221223 return nil , err
222224 }
223- return result .Routes , nil
225+ var routes []* adctypes.Route
226+ for _ , service := range result .Services {
227+ routes = append (routes , service .Routes ... )
228+ }
229+ return routes , nil
224230}
225231
226232// adcServiceResource implements ServiceResource
@@ -261,3 +267,25 @@ func (c *adcConsumerResource) List(ctx context.Context) ([]*adctypes.Consumer, e
261267 }
262268 return result .Consumers , nil
263269}
270+
271+ type adcUpstreamResource struct {
272+ * adcDataplaneResource
273+ }
274+
275+ func (r * adcUpstreamResource ) List (ctx context.Context ) ([]* adctypes.Upstream , error ) {
276+ result , err := r .dumpResources (ctx )
277+ if err != nil {
278+ return nil , err
279+ }
280+ upstreams := make ([]* adctypes.Upstream , 0 , len (result .Services ))
281+ for _ , svc := range result .Services {
282+ if svc .Upstream != nil {
283+ upstreams = append (upstreams , svc .Upstream )
284+ }
285+ if svc .Upstreams != nil {
286+ upstreams = append (upstreams , svc .Upstreams ... )
287+ }
288+ }
289+
290+ return upstreams , nil
291+ }
0 commit comments