From 9ae539c4527ad93e93b9b5786f1406ca138bbb36 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Sat, 5 Nov 2011 14:10:17 -0700 Subject: [PATCH] Separate metadata api into its own service part 1 of blueprint separate-nova-metadata * adds api/metadata/ and moves code from ec2 * moves metadata into separate binary * changes metadata forward to use metadata host and port * moves the metadata accept rule to the metadata api * adds nova-api-* to setup.py Change-Id: I7f5d8e6cafc55b5c383cd88991f29c6059fb8d82 --- bin/nova-api-metadata | 47 +++++++++++++++++++++++++++++++++++++++++++ nova/auth/__init__.py | 2 +- nova/flags.py | 5 +++-- 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100755 bin/nova-api-metadata diff --git a/bin/nova-api-metadata b/bin/nova-api-metadata new file mode 100755 index 00000000..199c3918 --- /dev/null +++ b/bin/nova-api-metadata @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Starter script for Nova Metadata API.""" + +import eventlet +eventlet.monkey_patch() + +import os +import sys + + +possible_topdir = os.path.normpath(os.path.join(os.path.abspath( + sys.argv[0]), os.pardir, os.pardir)) +if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")): + sys.path.insert(0, possible_topdir) + + +from nova import flags +from nova import log as logging +from nova import service +from nova import utils + +if __name__ == '__main__': + utils.default_flagfile() + flags.FLAGS(sys.argv) + logging.setup() + utils.monkey_patch() + server = service.WSGIService('metadata') + service.serve(server) + service.wait() diff --git a/nova/auth/__init__.py b/nova/auth/__init__.py index e2a140e8..e81c739d 100644 --- a/nova/auth/__init__.py +++ b/nova/auth/__init__.py @@ -23,6 +23,6 @@ :platform: Unix :synopsis: User-and-Project based RBAC using LDAP, SAML. .. moduleauthor:: Jesse Andrews -.. moduleauthor:: Vishvananda Ishaya +.. moduleauthor:: Vishvananda Ishaya .. moduleauthor:: Joshua McKenty """ diff --git a/nova/flags.py b/nova/flags.py index 9d6ef2a9..32cec119 100644 --- a/nova/flags.py +++ b/nova/flags.py @@ -361,7 +361,7 @@ DEFINE_integer('rabbit_max_retries', 0, 'maximum rabbit connection attempts (0=try forever)') DEFINE_string('control_exchange', 'nova', 'the main exchange to connect to') DEFINE_boolean('rabbit_durable_queues', False, 'use durable queues') -DEFINE_list('enabled_apis', ['ec2', 'osapi'], +DEFINE_list('enabled_apis', ['ec2', 'osapi', 'metadata'], 'list of APIs to enable by default') DEFINE_string('ec2_host', '$my_ip', 'ip of api server') DEFINE_string('ec2_dmz_host', '$my_ip', 'internal ip of api server') @@ -377,7 +377,8 @@ DEFINE_integer('osapi_port', 8774, 'OpenStack API port') DEFINE_string('osapi_path', '/v1.1/', 'suffix for openstack') DEFINE_integer('osapi_max_limit', 1000, 'max number of items returned in a collection response') - +DEFINE_string('metadata_host', '$my_ip', 'ip of metadata server') +DEFINE_integer('metadata_port', 8775, 'Metadata API port') DEFINE_string('default_project', 'openstack', 'default project for openstack') DEFINE_string('default_image', 'ami-11111', 'default image to use, testing only')