diff --git a/chameleon-appliances/bare-template.yaml b/chameleon-appliances/bare-template.yaml index 28c81a450fe8a9dcd82a0377ce1d9b678d46e6bf..64c3d309e705437df87a87c4480b00327e82bac1 100644 --- a/chameleon-appliances/bare-template.yaml +++ b/chameleon-appliances/bare-template.yaml @@ -38,6 +38,10 @@ parameters: default: CC-CentOS7 constraints: - custom_constraint: glance.image + server_meta: + type: json + label: Server metadata + description: Metadata to add to the servers created resources: # floating IP for frontend instance_floating_ip: @@ -64,6 +68,7 @@ resources: networks: - network: sharednet1 scheduler_hints: { reservation: { get_param: reservation_id } } + metadata: { get_param: server_meta } outputs: first_instance_ip: description: The public IP address of the first instance. Login with the command 'ssh cc@first_instance_ip'. diff --git a/chi-appliance.py b/chi-appliance.py index 05fd83cb75eabad9a28cc68a84d977a5815c6dc7..a70092ee9ae255fe8a0a3dc428f6ba8ced2cec9c 100755 --- a/chi-appliance.py +++ b/chi-appliance.py @@ -50,6 +50,9 @@ def do_create(argv): extra_args.update(argv.extra) extra_args['reservation_id'] = reservation['id'] extra_args['node_count'] = reservation['max'] + # add metadata to the servers + lease_meta = {'lease_name': argv.lease, 'lease_id': leases[0]['id']} + extra_args['server_meta'] = json.dumps(lease_meta) template = os.path.abspath(argv.template) try: ret = shade_client.create_stack(argv.name, template_file=template, @@ -131,8 +134,12 @@ def do_configure(argv): # appliance inventory, need to grab info about hostnames and private_ip of # all nodes remote_inventory = {'all': {'hosts': {}}} - server_list = shade_client.list_servers({'az': 'blazar_'+lease['id']}) + server_list = shade_client.list_servers() for s in server_list: + meta = s.get('metadata') + if not meta or meta.get('lease_id') != lease['id']: + continue + name = s['name'] for i in s['addresses']['sharednet1']: if i['OS-EXT-IPS:type'] == 'fixed':