CloudShell Version: 2023.3 GA
Guide Version: 1.0
View / Download All Help Versions

Getting Started with Packaging API

Prerequisites

  • Python 3 (version 3.6 and above)
  • .NET Framework 4.7
  • .NET 5 Runtime (on Windows Execution Servers that will be used for packaging API operations)
  • quali_utils.3.3.0.tar.gz: Version 3.3.0 is cross-platform (supported on Windows/Linux) and requires both .NET Framework 4.7 and .NET 5 Runtime to work (Alternatively, you can use version 3.2, which is not cross-platform, and does require .NET 5 Runtime.

    pip install <path_to_quali_utils_package>

    Note: quali_utils.3.3.0 is supported by CloudShell 2022.1 and above. For previous versions, see earlier versions of CloudShell Help.

Installation

  1. Make sure you have a compatible Python version installed on your machine.
  2. To download the Python Package Editor that applies to your installed CloudShell version, visit the Python Package Editor Download Page.
  3. Do one of the following:

Code Sample

The following code sample provides an example of how to create new blueprints using the API. This example demonstrates how to perform the following flow:

This example uses the “requests” python module.

from quali_utils.quali_packaging import PackageEditor
import requests

#Create a new package in the local file system

p = PackageEditor()

p.create("c:\\myfolder\\mypack.zip")




#Load the package and prepare for edit

p.load("c:\\myfolder\\mypack.zip")

#Edit the package: f.e add new family

p.add_family("Ball", "", ["Game", "3D Shape", "MoreStuff"], False, False, False, False, True)


#Import the package into CloudShell

# 1 – authenticate

r = requests.put('http://localhost:9000/Api/Auth/Login', {"username": "admin", "password": "admin", "domain": "Global"})

authcode = "Basic " + response._content[1:-1]


#2 – Open the package before import

fileobj = open("c:\\p.zip", 'rb')

#3 – Send to CloudShell by calling Import Package REST API

r = requests.post('http://localhost:9000/API/Package/ImportPackage',

                 headers={"Authorization": authcode},

                 files={"file": fileobj})
print r._content

print r.ok