Function: AVI Virtual Service Delete

by Simon Sparks · 11 March 2026

To use this function add it to the class library file named PluginAVIService.ts

GitHub Repository: https://github.com/SimonSparksUK/Orchestrator

Filename: PluginAVIService.ts

Description: Orchestrator Function to Delete an AVI Virtual Service.

Private Function: AviVirtualServiceDelete

public AviVirtualServiceDelete(objAviVirtualService: AviVirtualService, strTenant: string = "admin"): void {

    let strAviObjectUrl: string = objAviVirtualService.getUrl();

    let objAviVroClient: AviVroClient = this.AviVroClientGetByAviObjectUrl(strAviObjectUrl);

    objAviVroClient.deleteObject(objAviVirtualService, strTenant);

    let strVsvipRef: string = objAviVirtualService.getVsvipRef();

    if (strVsvipRef != null) {
        let strVsvipUUID: string = strVsvipRef.substring(strVsvipRef.indexOf("vsvip-"), strVsvipRef.indexOf('#'));

        objAviVroClient.deleteObjectByUUID("vsvip", strVsvipUUID, strTenant);
    }

    let strPoolRef: string = objAviVirtualService.getPoolRef();

    if (strPoolRef != null) {
        let strPoolUUID: string = strPoolRef.substring(strPoolRef.indexOf("pool-"), strPoolRef.indexOf('#'));

        objAviVroClient.deleteObjectByUUID("pool", strPoolUUID, strTenant)

        let objAviPool: AviPool = objAviVroClient.getObjectByUUID("pool", strPoolUUID, strTenant) as AviPool;

        let strHealthMonitorRefToFind: string = objAviVirtualService.getName() + "_HealthMonitor";

        let arrHealthMonitorRef: string[] = objAviPool.getHealthMonitorRefs();

        arrHealthMonitorRef.forEach((strHealthMonitorRef: string): void => {

            if ((strHealthMonitorRef.indexOf(strHealthMonitorRefToFind)) !== -1) {
                let strHealthMonitorUUID: string = strHealthMonitorRef.substring(strHealthMonitorRef.indexOf("/healthmonitor-") + 1, strHealthMonitorRef.indexOf("#"));

                objAviVroClient.deleteObjectByUUID('healthmonitor', strHealthMonitorUUID, strTenant);
            }
        });
    }

    let strPoolGroupRef: string = objAviVirtualService.getPoolGroupRef();

    if (strPoolGroupRef != null) {
        let strPoolGroupUUID: string = strPoolGroupRef.substring(strPoolGroupRef.indexOf('poolgroup-'), strPoolGroupRef.indexOf('#'));

        objAviVroClient.deleteObjectByUUID('poolgroup', strPoolGroupUUID, strTenant)

        let objAviPoolGroup: AviPoolGroup = objAviVroClient.getObjectByUUID("poolgroup", strPoolGroupUUID, strTenant) as AviPoolGroup;

        let arrAviPoolGroupMember: AviPoolGroupMember[] = objAviPoolGroup.getMembers();

        arrAviPoolGroupMember.forEach((objAviPoolGroupMember: AviPoolGroupMember): void => {

            let strPoolRef: string = objAviPoolGroupMember.getPoolRef();

            if (strPoolRef != null) {
                let strPoolUUID: string = strPoolRef.substring(strPoolRef.indexOf('pool-'), strPoolRef.indexOf('#'));

                objAviVroClient.deleteObjectByUUID('pool', strPoolUUID, strTenant);
            }
        });

        if (strPoolRef != null) {
            let strPoolUUID: string = strPoolRef.substring(strPoolRef.indexOf('pool-'), strPoolRef.indexOf('#'));

            let objAviPool: AviPool = objAviVroClient.getObjectByUUID("pool", strPoolUUID, strTenant) as AviPool;

            let arrHealthMonitorRef: string[] = objAviPool.getHealthMonitorRefs();

            let strHealthMonitorRef: string = arrHealthMonitorRef.find((strHealthMonitorRef: string): boolean => {
                return strHealthMonitorRef === objAviVirtualService.getName() + "_HealthMonitor";
            });

            let strHealthMonitorUUID: string = strHealthMonitorRef.substring(strHealthMonitorRef.indexOf("/healthmonitor-") + 1, strHealthMonitorRef.indexOf("#"));

            objAviVroClient.deleteObjectByUUID('healthmonitor', strHealthMonitorUUID, strTenant);
        }
    }

    objAviVroClient.executeWorkflow();
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like