Managing Profiles

A profile type can be treated as the meta-type of a Profile object. A registry of profile types is built when the Cluster service starts. When creating a Profile object, you will indicate the profile type used in its spec property.

List Profiles

To examine the list of profiles:

def list_profiles(conn):
    print("List Profiles:")

    for profile in conn.clustering.profiles():
        print(profile.to_dict())

    for profile in conn.clustering.profiles(sort='name:asc'):
        print(profile.to_dict())

When listing profiles, you can specify the sorting option using the sort parameter and you can do pagination using the limit and marker parameters.

Full example: manage profile

Create Profile

When creating a profile, you will provide a dictionary with keys and values specified according to the profile type referenced.

def create_profile(conn):
    print("Create Profile:")

    spec = {
        'profile': 'os.nova.server',
        'version': 1.0,
        'name': 'os_server',
        'properties': {
            'name': SERVER_NAME,
            'flavor': FLAVOR_NAME,
            'image': IMAGE_NAME,
            'networks': {'network': NETWORK_NAME},
        },
    }

    profile = conn.clustering.create_profile(spec)
    print(profile.to_dict())

Optionally, you can specify a metadata keyword argument that contains some key-value pairs to be associated with the profile.

Full example: manage profile

Find Profile

To find a profile based on its name or ID:

def find_profile(conn):
    print("Find Profile:")

    profile = conn.clustering.find_profile('os_server')
    print(profile.to_dict())

The Cluster service doesn’t allow updating the spec of a profile. The only way to achieve that is to create a new profile.

Full example: manage profile

Get Profile

To get a profile based on its name or ID:

def get_profile(conn):
    print("Get Profile:")

    profile = conn.clustering.get_profile('os_server')
    print(profile.to_dict())

Full example: manage profile

Update Profile

After a profile is created, most of its properties are immutable. Still, you can update a profile’s name and/or metadata.

def update_profile(conn):
    print("Update Profile:")

    profile = conn.clustering.update_profile('os_server', name='old_server')
    print(profile.to_dict())

The Cluster service doesn’t allow updating the spec of a profile. The only way to achieve that is to create a new profile.

Full example: manage profile

Delete Profile

A profile can be deleted after creation, provided that it is not referenced by any active clusters or nodes. If you attempt to delete a profile that is still in use, you will get an error message.

def delete_profile(conn):
    print("Delete Profile:")

    conn.clustering.delete_profile('os_server')

    print("Profile deleted.")