cancel
Showing results for 
Search instead for 
Did you mean: 

Problem this snippet solves:

This class is part of the "Java iControl Objects" series of Articles on DevCentral. This class creates an iRule object and allows a developer to interact with the iControl LTM Rule API methods in the context of using an object.

Code :

package iControl.Objects.LTM;

public class iRule {
  private iControl.Interfaces _interfaces = null;
  private String _name = null;
  private String _definition = null;
  private Exception _lastException = null;
  
  //-----------------------------------------------------------------------
  // Member Accessors
  //-----------------------------------------------------------------------
  public iControl.Interfaces getInterfaces() { return _interfaces; }
  public void setInterfaces(iControl.Interfaces interfaces) { _interfaces = interfaces; }

  public String getName() { return _name;  }
  public void setName(String value) { _name = value; }
  
  public String getDefinition() { return _definition;  }
  public void setDefinition(String value) { _definition = value; }
  
  public Exception getLastException() { return _lastException; }
  
  //-----------------------------------------------------------------------
  // Constructors
  //-----------------------------------------------------------------------
  public iRule(iControl.Interfaces interfaces, String name, String definition)
  {
    _interfaces = interfaces; 
    _name = name;
    _definition = definition;
  }
  public iRule(iControl.Interfaces interfaces, iControl.LocalLBRuleRuleDefinition rule_def)
  {
    _interfaces = interfaces;
    _name = rule_def.getRule_name();
    _definition = rule_def.getRule_definition();
  }

  protected void validateMembers() throws Exception
  {
    if ( (null == _interfaces) || (null == _name) || (null == _definition) )
    {
      throw new Exception("Invalid Rule Parameters");
    }
  }
  
  protected void clearException()
  {
    _lastException = null;
  }

  //-----------------------------------------------------------------------
  // Attribute Accessors
  //-----------------------------------------------------------------------
  
  //-----------------------------------------------------------------------
  // Public Methods
  //-----------------------------------------------------------------------
  public boolean save() throws Exception
  {
    validateMembers();
    clearException();
    
    boolean bSaved = false;
    
    iControl.LocalLBRuleRuleDefinition ruleDef =
      new iControl.LocalLBRuleRuleDefinition();
    ruleDef.setRule_name(_name);
    ruleDef.setRule_definition(_definition);
    
    iControl.LocalLBRuleRuleDefinition [] ruleDefA = { ruleDef };

    // First attempt to create the iRule.
    try
    {
      _interfaces.getLocalLBRule().create(ruleDefA);
      bSaved = true;
    }
    catch(Exception ex)
    {
      if ( ex.getMessage().contains("already") )
      {
        // If create fails due to it already existing,
        // then try to modify the existing one.
        try
        {
          _interfaces.getLocalLBRule().modify_rule(ruleDefA);
          bSaved = true;
        }
        catch(Exception ex2)
        {
          _lastException = ex2;
        }
      }
      else
      {
        _lastException = ex;
      }
    }
    return bSaved;
  }
  
  public boolean load() throws Exception
  {
    boolean bLoaded = false;
    
    validateMembers();
    
    String [] rule_list = { _name };
    
    try
    {
      iControl.LocalLBRuleRuleDefinition []ruleDef = 
        _interfaces.getLocalLBRule().query_rule(rule_list);
      _definition = ruleDef[0].getRule_definition();
      
      bLoaded = true;
    }
    catch(Exception ex)
    {
      _lastException = ex;
    }
    
    return bLoaded;
  }
  
  public boolean checkSyntax() throws Exception
  {
    clearException();
    validateMembers();
    
    boolean bValid = false;
    
    String tmpName = "icoTempRuleForStatusCheck";
    
    iRule tmpiRule = new iRule(_interfaces, tmpName, _definition);
    try
    {
      if ( tmpiRule.save() )
      {
        tmpiRule.delete();
        bValid = true;
      }
    }
    catch(Exception ex)
    {
      _lastException = ex;
      bValid = false;
    }
    
    return bValid;
  }
  
  public void delete() throws Exception
  {
    validateMembers();
    
    String [] rule_list = { _name };
    _interfaces.getLocalLBRule().delete_rule(rule_list);
  }
  
  public iControl.LocalLBRuleRuleStatisticEntry getStatistics() throws Exception
  {
    validateMembers();
    
    String [] rule_list = { _name };
    iControl.LocalLBRuleRuleStatistics ruleStats =
      _interfaces.getLocalLBRule().get_statistics(rule_list);
    
    iControl.LocalLBRuleRuleStatisticEntry statsEntry =
      ruleStats.getStatistics()[0];
    
    return statsEntry;
  }
  
  public void resetStatistics() throws Exception
  {
    validateMembers();
    
    String [] rule_list = { _name };
    _interfaces.getLocalLBRule().reset_statistics(rule_list);
  }

  //-----------------------------------------------------------------------
  // Public Static Methods
  //-----------------------------------------------------------------------
  public static iRule [] getList(iControl.Interfaces interfaces) throws Exception
  {
    iRule [] irule_list = null;
    
    iControl.LocalLBRuleRuleDefinition [] rule_defs = 
      interfaces.getLocalLBRule().query_all_rules();
    irule_list = new iRule[rule_defs.length];
    for(int i=0; i
Version history
Last update:
‎07-Mar-2015 16:02
Updated by:
Contributors