Please note that these Trac pages are no longer being updated. Wiki contents/documentation have moved to GitHub.

Custom Installer Builder API

The XML-RPC interface to the Custom Installer Builder can be used to create installers which can then be fetched over HTTP.

The following procedure calls are supported:

  • api_version()

Returns the current API version as a string. If you are designing clients that leverage this API, it may be helpful to check against this string to prevent unanticipated behavior.

A sample call:

proxy = xmlrpclib.ServerProxy('https://custombuilder.poly.edu/custom_install/xmlrpc/')
results = proxy.api_version()

A sample return string:

'2.0'
  • build_installers(vessels, user_data=None)

Builds an installer for each of the specified platforms using the given vessel/VM and user information. In the absence of provided user data, cryptographic keys will automatically be generated.

A sample call:

vessels = [
    {'percentage': 60, 'owner': 'alex', 'users': ['bob']},
    {'percentage': 20, 'owner': 'carl', 'users': ['darren']},
]

user_data = {
    'alex': {'public_key': '123 321'},
}

proxy = xmlrpclib.ServerProxy('https://custombuilder.poly.edu/custom_install/xmlrpc/')
results = proxy.build_installers(vessels, user_data)

A sample return dictionary (assuming the user requested all three platforms):

{
    'installers': {
        'windows': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/windows',
        'mac': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/mac',
        'linux': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/linux'
    },

    'users': {
        'alex': {'public_key': '123 321'},
        'bob': {'public_key': '123 321', 'private_key': '123 321'},
        'carl': {'public_key': '123 321', 'private_key': '123 321'},
        'darren': {'public_key': '123 321', 'private_key': '123 321'},
    },

    'build_id': BUILD_ID
}
  • get_urls(build_id)

Returns a dictionary containing the URLs from which installers for the given build ID may be downloaded.

A sample call:

proxy = xmlrpclib.ServerProxy('https://custombuilder.poly.edu/custom_install/xmlrpc/')
results = proxy.get_urls('87198c4618a893c47b3d48643b7d97454417c8d5')

A sample return dictionary:

{
    'windows': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/windows',
    'mac': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/mac',
    'linux': 'https://custombuilder.poly.edu/custom_install/BUILD_ID/installers/linux'
}