Forum Discussion

Pushkar_73645's avatar
Pushkar_73645
Icon for Nimbostratus rankNimbostratus
Feb 26, 2012

icontrol call for 10.1.0

I am trying to find out soap calls for following.

 

 

1) Any active user sessions

 

 

2) Find out sync status in an active/active configuration

 

 

I was looking through icontrol documentation but could not find any appropriate calls.

 

any icontrol calls that i can use?

 

 

Thanks,

 

Pushkar

 

  • Hamish's avatar
    Hamish
    Icon for Cirrocumulus rankCirrocumulus
    Mmm... I think there's a db variable for that. Let me check when i get off the tube

     

     

    H
  • Hamish's avatar
    Hamish
    Icon for Cirrocumulus rankCirrocumulus
    It's a DB call. There's s perl program to so this in the codeshare at https://devcentral.f5.com/wiki/iControl.walkF5Stats.ashx that i wrote a few years back.

     

     

    the relevant code (Apologies for the line numbers) is

     

     

    
    ----------------------------------------------------------------------------
    0359 getConfigSyncStatus
    0360----------------------------------------------------------------------------
    0361sub getConfigSyncStatus {
    0362  my $dbh=$_[0];
    0363  my $dev=$_[1];
    0364  my $t0=[gettimeofday];
    0365 
    0366  my $devID=$dev->{ID};
    0367  @dbKeys = (
    0368      "configsync.autodetect",
    0369      "configsync.localconfigtime",
    0370      "configsync.peerconfigtime",
    0371      "configsync.localsyncedtime",
    0372      "configsync.state");
    0373  (@dbValues) = &getDBVariable($dev, @dbKeys);
    0374   
    0375  my $autodetect;
    0376 
    0377  dbprint "check " , gmtime($dbValues[1]);
    0378 
    0379  print "CONFIG SYNC STATUS --\n";
    0380  if ( "disable" eq $dbValues[0] ) {
    0381    Standalone
    0382    dbprint "    Status:  disabled\n";
    0383    dbprint "    Last change (Self):  ", strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[1])), "\n";
    0384    $autodetect=0;
    0385  } else {
    0386    HA Pair
    0387    $autodetect=1;
    0388    dbprint "    Status:  $dbValues[4]\n";
    0389    dbprint "    Last change (Self):  ", strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[1])), "\n";
    0390    dbprint "    Last change (Peer):  ", strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[2])), "\n";
    0391    dbprint "    Last Configsync:     ", strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[3])), "\n";
    0392  }
    0393   get the current f5deviceSync information. This creates blank info if one doesn't exist already...
    0394  my $f5dS=getDBDeviceSync($dbh, $devID);
    0395 
    0396   Update the information... If it's changed. And set an alert or warning (In DB only?)...
    0397  my $localcfgtime=strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[1]));
    0398  my $peercfgtime=strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[2]));
    0399  my $localsynctime=strftime("%Y%m%dT%H%M%SZ", gmtime($dbValues[3]));
    0400 
    0401  my ($statusCode)=($dbValues[4] =~ /(\d+) \-/);
    0402 
    0403  dbprint "getConfigSyncStatus: Status code of $statusCode from $dbValues[4]\n";
    0404 
    0405  if(($localcfgtime ne $f5dS->{localcfgtime})||($peercfgtime ne $f5dS->{peercfgtime})||($localsynctime ne $f5dS->{localsynctime})) {
    0406    dbprint "  Status Change. Updating DB\n";
    0407    my $updatestr="update f5deviceSync set autodetect=$autodetect,localcfgtime='$localcfgtime',peercfgtime='$peercfgtime',localsynctime='$localcfgtime',state='$dbValues[4]' where id=$devID";
    0408    dbprint "getConfigSyncStatus: SQL [$updatestr]\n";
    0409 
    0410    my $update=$dbh->prepare($updatestr);
    0411 
    0412     
    0413    $update->execute;
    0414 
    0415    
    0416  }
    0417  my $elapsed=tv_interval ( $t0 );
    0418  log_action($elapsed, 0, "getConfigSyncStatus", "");
    0419 
    0420  $t0=[gettimeofday];
    0421 
    0422   Not very useful... This overwrites the last one... Needs fixing...
    0423  my $updatestr="update cluster,cluster_device set insync=$statusCode where cluster.clusterid=cluster_device.clusterid and cluster_device.deviceid=$devID";
    0424  dbprint "getConfigSyncStatus: SQL [$updatestr]\n";
    0425 
    0426  my $update=$dbh->prepare($updatestr);
    0427  $update->execute;
    0428 
    0429  $updatestr="update device set sync=$statusCode where id=$devID";
    0430  $update=$dbh->prepare($updatestr);
    0431  $update->execute;
    0432 
    0433  my $elapsed=tv_interval ( $t0 );
    0434  log_action($elapsed, 0, "getConfigSyncStatus", "$updatestr");
    0435 
    0436} 
    
  • Thanks Hamish.

     

     

    I was able to get config sync db varialbe with php.

     

     

    Any call which can provide me information about users which are already logged in?

     

     

    -Pushkar

     

     

     

  • Can you explain what you mean by "already logged in". Are you referring to GUI/iControl users that have authenticated connections to the admin interface? If so, I don't believe that's available.

     

     

    -Joe

     

  • Yes, I am looking for list of users who is already logged on using web gui. We are trying to find if anyone else is logged in before making any changes.

     

     

    Thanks for looking into this.

     

     

    -Pushkar