Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

iCall for working as if LLCF (4EA Interface)

muntae_kim
Altocumulus
Altocumulus

hello? My name is Muntae.

Using iCall, the following LLCF operation is required, so please review whether it is possible to operate according to the work method I wrote.

** When all interfaces are disabled, it is an environment where only one interface can be manually enabled. **

 

[Implementation Goal]
- When interface 1.1 is down, 1.2, 2.1, 2.2 down at the same time
- When interface 1.2 down, 1.1, 2.1, 2.2 down at the same time
- When interface 2.1 down, 1.1, 1.2, 2.2 down at the same time
- When interface 2.2 is down, 1.1, 1.2, 2.1 down at the same time

- When interface 1.1 up, 1.2, 2.1, 2.2 up at the same time
- When interface 1.2 up, 1.1, 2.1, 2.2 up at the same time
- When interface 2.1 up, 1.1, 1.2, 2.2 up at the same time
- When interface 2.2 up, 1.1, 1.2, 2.1 up at the same time

 

[Working procedure]
1. Create /config/llcf.conf file
[Attach the file for details]

sys icall script /Common/interface_1_1_down {
app-service none
definition {
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_1_down script null
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
}
description none
events none
}

sys icall script /Common/interface_1_1_up {
app-service none
definition {
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down

}
description none
events none
}

sys icall script /Common/interface_1_2_down {
app-service none
definition {
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_1_down script null
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
}
description none
events none
}

sys icall script /Common/interface_1_2_up {
app-service none
definition {
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down

}
description none
events none
}

sys icall script /Common/interface_2_1_down {
app-service none
definition {
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
}
description none
events none
}

sys icall script /Common/interface_2_1_up {
app-service none
definition {
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down

}
description none
events none
}

sys icall script /Common/interface_2_2_down {
app-service none
definition {
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
}
description none
events none
}

sys icall script /Common/interface_2_2_up {
app-service none
definition {
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down

}
description none
events none
}


sys icall script /common/null {
app-service none
definition {
}
description none
events none
}

 

2. Create the /config/user_alert.conf file
[Attach the file for details]

alert interface_1_1_down "Link: 1.1 is DOWN" {
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_1_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}

alert interface_1_2_down "Link: 1.2 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_2_1_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}

alert interface_2_1_down "Link: 2.1 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}

alert interface_2_2_down "Link: 2.2 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_1_down"
}

alert interface_1_1_up "Link: 1.1 is UP" {
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_1_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}

alert interface_1_2_up "Link: 1.2 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_2_1_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}

alert interface_2_1_up "Link: 2.1 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}

alert interface_2_2_up "Link: 2.2 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_1_up"
}

3. Merge script configuration:
#tmsh load sys config merge file /config/llcf.conf

4. Apply settings:
- #tmsh save sys config

5. Check to apply script settings:
#list sys icall handler triggered interface 1.1 down
#list sys icall handler triggered interface 1.2 down
#list sys icall handler triggered interface 2.1 down
#list sys icall handler triggered interface 2.2 down
#list sys icall handler triggered interface 1.1 up
#list sys icall handler triggered interface 1.2 up
#list sys icall handler triggered interface 2.1 up
#list sys icall handler triggered interface 2.2 up

1 ACCEPTED SOLUTION

JRahm
Community Manager
Community Manager

Ok, just to make sure this worked, I modified for my local vmware fusion environment (updated above to add the correct enabled/disabled keywords) and it works just fine.

user_alert.conf as is on my system:

alert interface_1_1_down "Link: 1.1 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_3_down "Link: 1.3 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.3 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.1 } }"
}
alert interface_1_3_up "Link: 1.3 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.3 } }"
}

 bigip_script.conf appropriate objects as is on my system:

sys icall script interface_manager {
    app-service none
    definition {
        foreach var { action interface } {
            set $var $EVENT::context($var)
        }
        switch ${interface} {
            "1.1" {
                tmsh::modify /net interface 1.3 ${action}
            }
            "1.3" {
                tmsh::modify /net interface 1.1 ${action}
            }
        }
    }
    description none
    events none
}
sys icall handler triggered interface_manager {
    script interface_manager
    subscriptions {
        interface_manager {
            event-name interface_manager
        }
    }
}

View solution in original post

5 REPLIES 5

Leslie_Hubertus
Community Manager
Community Manager

Hi @muntae_kim - my apologies, your post got caught in our spam filter. I've just moved it from the spam queue, but want to make sure I understand what you are asking for. You are wanting someone to take a look and make sure that what you wrote above is correct? Are you running into an error, or asking for someone to proof-read before implementing?

muntae_kim
Altocumulus
Altocumulus

Yes. We would like to receive an accurate answer to your inquiry as soon as possible.

JRahm
Community Manager
Community Manager

Hi @muntae_kim, have you tested this and it works and you're asking if this is an agreeable solution, or are you asking if it will work as you've specified? I think you said "working solution" so if that's the case, it shouldn't be a problem. But there are ways to significantly reduce the complexity of what you've built. I haven't tested the below, so you'll want to study and test (and likely tweak) what I've written, but it should get you on your way (again...test in a lab!)

 

 

###
### begin user_alert.conf
###
alert interface_1_1_down "Link: 1.1 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_2_down "Link: 1.2 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.2 } }"
}
alert interface_2_1_down "Link: 2.1 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 2.1 } }"
}
alert interface_2_2_down "Link: 2.2 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 2.2 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled  } { name interface value 1.1 } }"
}
alert interface_1_2_up "Link: 1.2 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.2 } }"
}
alert interface_2_1_up "Link: 2.1 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 2.1 } }"
}
alert interface_2_2_up "Link: 2.2 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 2.2 } }"
}
###
### end user_alert.conf 
###

###
### begin icall objects
###
sys icall script interface_manager {
    app-service none
    definition {
        foreach var { action interface } {
            set $var $EVENT::context($var)
        }
        switch ${interface} {
            "1.1" {
                tmsh::modify /net interface 1.2 ${action}
                tmsh::modify /net interface 2.1 ${action}
                tmsh::modify /net interface 2.2 ${action}
            }
            "1.2" {
                tmsh::modify /net interface 1.1 ${action}
                tmsh::modify /net interface 2.1 ${action}
                tmsh::modify /net interface 2.2 ${action}
            }
            "2.1" {
                tmsh::modify /net interface 1.1 ${action}
                tmsh::modify /net interface 1.2 ${action}
                tmsh::modify /net interface 2.2 ${action}
            }
            "2.2" {
                tmsh::modify /net interface 1.1 ${action}
                tmsh::modify /net interface 1.2 ${action}
                tmsh::modify /net interface 2.1 ${action}
            }
        }
    }
    description none
    events none
}

sys icall handler triggered interface_manager {
    script interface_manager
    subscriptions {
        interface_manager {
            event-name interface_manager
        }
    }
}
###
### end icall objects
###

 

 

JRahm
Community Manager
Community Manager

Ok, just to make sure this worked, I modified for my local vmware fusion environment (updated above to add the correct enabled/disabled keywords) and it works just fine.

user_alert.conf as is on my system:

alert interface_1_1_down "Link: 1.1 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_3_down "Link: 1.3 is DOWN" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.3 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.1 } }"
}
alert interface_1_3_up "Link: 1.3 is UP" {
    exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.3 } }"
}

 bigip_script.conf appropriate objects as is on my system:

sys icall script interface_manager {
    app-service none
    definition {
        foreach var { action interface } {
            set $var $EVENT::context($var)
        }
        switch ${interface} {
            "1.1" {
                tmsh::modify /net interface 1.3 ${action}
            }
            "1.3" {
                tmsh::modify /net interface 1.1 ${action}
            }
        }
    }
    description none
    events none
}
sys icall handler triggered interface_manager {
    script interface_manager
    subscriptions {
        interface_manager {
            event-name interface_manager
        }
    }
}

Thanks for the quick and accurate reply.