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.")