@@ -401,6 +401,32 @@ func (b *BigIP) getDevice() (*bigip.Device, error) {
401401 return nil , fmt .Errorf ("device %s not found" , b .GetHostname ())
402402}
403403
404+ func (b * BigIP ) getAS3Info () (* as3.AS3Info , error ) {
405+ var as3info as3.AS3Info
406+
407+ req := & bigip.APIRequest {
408+ Method : "get" ,
409+ URL : "mgmt/shared/appsvcs/info" ,
410+ ContentType : "application/json" ,
411+ }
412+ resp , err := (* bigip .BigIP )(b ).APICall (req )
413+ if err != nil {
414+ return nil , err
415+ }
416+
417+ var reqError bigip.RequestError
418+ if json .Unmarshal (resp , & reqError ) == nil && reqError .Code != 0 {
419+ return nil , fmt .Errorf ("%s\n %s" , reqError .Error (), string (resp [:]))
420+ }
421+
422+ err = json .Unmarshal (resp , & as3info )
423+ if err != nil {
424+ return nil , err
425+ }
426+
427+ return & as3info , nil
428+ }
429+
404430func NewSession (uri * url.URL ) (* BigIP , error ) {
405431 // check for user
406432 user := uri .User .Username ()
@@ -439,7 +465,13 @@ func NewSession(uri *url.URL) (*BigIP, error) {
439465 return nil , fmt .Errorf ("failed to get device information: %w" , err )
440466 }
441467
442- log .Infof ("Connected to %s, %s (%s %s), %s" , device .MarketingName , device .Name , device .Version ,
443- device .Edition , device .FailoverState )
468+ as3Version := "AS3 unavailable"
469+ if as3info , err := b .getAS3Info (); err == nil {
470+ as3Version = "AS3 " + as3info .Version
471+ }
472+
473+ log .Infof ("Connected to %s, %s (%s %s), %s, %s" , device .MarketingName , device .Name , device .Version ,
474+ device .Edition , as3Version , device .FailoverState )
475+
444476 return b , nil
445477}
0 commit comments