Forum Discussion

proxicon's avatar
proxicon
Icon for Altostratus rankAltostratus
Aug 23, 2022
Solved

Create a IFile {system level} via API - Powershell

Hi All, Attempting the following: 1: Create iFile system level 2: Update existing iRule-> iFile referance the the file uploaded in step 1. Im getting stuck at step 1, any assistance creatly appre...
  • proxicon's avatar
    proxicon
    Aug 24, 2022

    Found my fault... JRahm & Patrik_Jonsson this was after my long reply to your other post JRahm (and yes it works on a POST method)... I had the file name in the URL overload specified on the initial create request, it should not be in there...

    so this..

     

     

    $File_Name = 'MyFile'
    $url       = "{0}{1}{2}" -f $big_ip, "/mgmt/tm/sys/file/ifile/",$File_Name
    
    $headers = @{
        'Content-Type'    = 'application/json'
        'X-F5-Auth-Token' = $token
    }
    
    $body = @{
        'name'            = $File_Name
        'source-path'     = "file:/var/config/rest/downloads/$File_Name"
    } | ConvertTo-Json -Compress
    
    $result = Invoke-RestMethod -Method post -Uri $url -Headers $headers -Body $body 

     

     


    needs to be:

     

     

    $File_Name = 'MyFile'
    $url       = "{0}{1}" -f $big_ip, "/mgmt/tm/sys/file/ifile/"
    
    $headers = @{
        'Content-Type'    = 'application/json'
        'X-F5-Auth-Token' = $token
    }
    
    $body = @{
        'name'            = $File_Name
        'source-path'     = "file:/var/config/rest/downloads/$File_Name"
    } | ConvertTo-Json -Compress
    
    $result = Invoke-RestMethod -Method post -Uri $url -Headers $headers -Body $body

     

     

     without the file name in the initial overload.

    Hope this helps some future person 🙂 
    Off to the next challange.

    Bonus: Retyped to splat (overload definition) - because why not.

     

     

    # Create a IFile {system level} 
    $File_Name = 'MyFile'
    $Uri       = "{0}{1}" -f $big_ip, "/mgmt/tm/sys/file/ifile/"
    
    # Construct overload definition
    $Param_InvokeRestMethod = @{
        headers = @{
            'Content-Type'    = 'application/json'
            'X-F5-Auth-Token' = $token
        }
    
        body = @{
            'name'            = $File_Name
            'source-path'     = "file:/var/config/rest/downloads/$File_Name"
        } | ConvertTo-Json -Compress
    
        Method = 'post'
    
        Uri = $Uri
    }
    
    # Post & capture result
    $result = Invoke-RestMethod @Param_InvokeRestMethod