Reformat code with Black code formatter
Unify the code style along PEP and Black principles using the tool.
This commit is contained in:
@ -46,45 +46,52 @@ class MetadataAPIInstance(object):
|
||||
|
||||
# Add flask routes inside our instance
|
||||
def add_routes(self):
|
||||
@self.mdapi.route('/', methods=['GET'])
|
||||
@self.mdapi.route("/", methods=["GET"])
|
||||
def api_root():
|
||||
return flask.jsonify({"message": "PVC Provisioner Metadata API version 1"}), 209
|
||||
return (
|
||||
flask.jsonify({"message": "PVC Provisioner Metadata API version 1"}),
|
||||
209,
|
||||
)
|
||||
|
||||
@self.mdapi.route('/<version>/meta-data/', methods=['GET'])
|
||||
@self.mdapi.route("/<version>/meta-data/", methods=["GET"])
|
||||
def api_metadata_root(version):
|
||||
metadata = """instance-id\nname\nprofile"""
|
||||
return metadata, 200
|
||||
|
||||
@self.mdapi.route('/<version>/meta-data/instance-id', methods=['GET'])
|
||||
@self.mdapi.route("/<version>/meta-data/instance-id", methods=["GET"])
|
||||
def api_metadata_instanceid(version):
|
||||
source_address = flask.request.__dict__['environ']['REMOTE_ADDR']
|
||||
source_address = flask.request.__dict__["environ"]["REMOTE_ADDR"]
|
||||
vm_details = self.get_vm_details(source_address)
|
||||
instance_id = vm_details.get('uuid', None)
|
||||
instance_id = vm_details.get("uuid", None)
|
||||
return instance_id, 200
|
||||
|
||||
@self.mdapi.route('/<version>/meta-data/name', methods=['GET'])
|
||||
@self.mdapi.route("/<version>/meta-data/name", methods=["GET"])
|
||||
def api_metadata_hostname(version):
|
||||
source_address = flask.request.__dict__['environ']['REMOTE_ADDR']
|
||||
source_address = flask.request.__dict__["environ"]["REMOTE_ADDR"]
|
||||
vm_details = self.get_vm_details(source_address)
|
||||
vm_name = vm_details.get('name', None)
|
||||
vm_name = vm_details.get("name", None)
|
||||
return vm_name, 200
|
||||
|
||||
@self.mdapi.route('/<version>/meta-data/profile', methods=['GET'])
|
||||
@self.mdapi.route("/<version>/meta-data/profile", methods=["GET"])
|
||||
def api_metadata_profile(version):
|
||||
source_address = flask.request.__dict__['environ']['REMOTE_ADDR']
|
||||
source_address = flask.request.__dict__["environ"]["REMOTE_ADDR"]
|
||||
vm_details = self.get_vm_details(source_address)
|
||||
vm_profile = vm_details.get('profile', None)
|
||||
vm_profile = vm_details.get("profile", None)
|
||||
return vm_profile, 200
|
||||
|
||||
@self.mdapi.route('/<version>/user-data', methods=['GET'])
|
||||
@self.mdapi.route("/<version>/user-data", methods=["GET"])
|
||||
def api_userdata(version):
|
||||
source_address = flask.request.__dict__['environ']['REMOTE_ADDR']
|
||||
source_address = flask.request.__dict__["environ"]["REMOTE_ADDR"]
|
||||
vm_details = self.get_vm_details(source_address)
|
||||
vm_profile = vm_details.get('profile', None)
|
||||
vm_profile = vm_details.get("profile", None)
|
||||
# Get the userdata
|
||||
if vm_profile:
|
||||
userdata = self.get_profile_userdata(vm_profile)
|
||||
self.logger.out("Returning userdata for profile {}".format(vm_profile), state='i', prefix='Metadata API')
|
||||
self.logger.out(
|
||||
"Returning userdata for profile {}".format(vm_profile),
|
||||
state="i",
|
||||
prefix="Metadata API",
|
||||
)
|
||||
else:
|
||||
userdata = None
|
||||
return flask.Response(userdata)
|
||||
@ -92,46 +99,46 @@ class MetadataAPIInstance(object):
|
||||
def launch_wsgi(self):
|
||||
try:
|
||||
self.md_http_server = gevent.pywsgi.WSGIServer(
|
||||
('169.254.169.254', 80),
|
||||
("169.254.169.254", 80),
|
||||
self.mdapi,
|
||||
log=sys.stdout,
|
||||
error_log=sys.stdout
|
||||
error_log=sys.stdout,
|
||||
)
|
||||
self.md_http_server.serve_forever()
|
||||
except Exception as e:
|
||||
self.logger.out('Error starting Metadata API: {}'.format(e), state='e')
|
||||
self.logger.out("Error starting Metadata API: {}".format(e), state="e")
|
||||
|
||||
# WSGI start/stop
|
||||
def start(self):
|
||||
# Launch Metadata API
|
||||
self.logger.out('Starting Metadata API at 169.254.169.254:80', state='i')
|
||||
self.logger.out("Starting Metadata API at 169.254.169.254:80", state="i")
|
||||
self.thread = Thread(target=self.launch_wsgi)
|
||||
self.thread.start()
|
||||
self.logger.out('Successfully started Metadata API thread', state='o')
|
||||
self.logger.out("Successfully started Metadata API thread", state="o")
|
||||
|
||||
def stop(self):
|
||||
if not self.md_http_server:
|
||||
return
|
||||
|
||||
self.logger.out('Stopping Metadata API at 169.254.169.254:80', state='i')
|
||||
self.logger.out("Stopping Metadata API at 169.254.169.254:80", state="i")
|
||||
try:
|
||||
self.md_http_server.stop()
|
||||
time.sleep(0.1)
|
||||
self.md_http_server.close()
|
||||
time.sleep(0.1)
|
||||
self.md_http_server = None
|
||||
self.logger.out('Successfully stopped Metadata API', state='o')
|
||||
self.logger.out("Successfully stopped Metadata API", state="o")
|
||||
except Exception as e:
|
||||
self.logger.out('Error stopping Metadata API: {}'.format(e), state='e')
|
||||
self.logger.out("Error stopping Metadata API: {}".format(e), state="e")
|
||||
|
||||
# Helper functions
|
||||
def open_database(self):
|
||||
conn = psycopg2.connect(
|
||||
host=self.config['metadata_postgresql_host'],
|
||||
port=self.config['metadata_postgresql_port'],
|
||||
dbname=self.config['metadata_postgresql_dbname'],
|
||||
user=self.config['metadata_postgresql_user'],
|
||||
password=self.config['metadata_postgresql_password']
|
||||
host=self.config["metadata_postgresql_host"],
|
||||
port=self.config["metadata_postgresql_port"],
|
||||
dbname=self.config["metadata_postgresql_dbname"],
|
||||
user=self.config["metadata_postgresql_user"],
|
||||
password=self.config["metadata_postgresql_password"],
|
||||
)
|
||||
cur = conn.cursor(cursor_factory=RealDictCursor)
|
||||
return conn, cur
|
||||
@ -153,7 +160,7 @@ class MetadataAPIInstance(object):
|
||||
data_raw = cur.fetchone()
|
||||
self.close_database(conn, cur)
|
||||
if data_raw is not None:
|
||||
data = data_raw.get('userdata', None)
|
||||
data = data_raw.get("userdata", None)
|
||||
return data
|
||||
else:
|
||||
return None
|
||||
@ -165,27 +172,31 @@ class MetadataAPIInstance(object):
|
||||
|
||||
# Figure out which server this is via the DHCP address
|
||||
host_information = dict()
|
||||
networks_managed = (x for x in networks if x.get('type') == 'managed')
|
||||
networks_managed = (x for x in networks if x.get("type") == "managed")
|
||||
for network in networks_managed:
|
||||
network_leases = pvc_network.getNetworkDHCPLeases(self.zkhandler, network.get('vni'))
|
||||
network_leases = pvc_network.getNetworkDHCPLeases(
|
||||
self.zkhandler, network.get("vni")
|
||||
)
|
||||
for network_lease in network_leases:
|
||||
information = pvc_network.getDHCPLeaseInformation(self.zkhandler, network.get('vni'), network_lease)
|
||||
information = pvc_network.getDHCPLeaseInformation(
|
||||
self.zkhandler, network.get("vni"), network_lease
|
||||
)
|
||||
try:
|
||||
if information.get('ip4_address', None) == source_address:
|
||||
if information.get("ip4_address", None) == source_address:
|
||||
host_information = information
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Get our real information on the host; now we can start querying about it
|
||||
client_macaddr = host_information.get('mac_address', None)
|
||||
client_macaddr = host_information.get("mac_address", None)
|
||||
|
||||
# Find the VM with that MAC address - we can't assume that the hostname is actually right
|
||||
_discard, vm_list = pvc_vm.get_list(self.zkhandler, None, None, None, None)
|
||||
vm_details = dict()
|
||||
for vm in vm_list:
|
||||
try:
|
||||
for network in vm.get('networks'):
|
||||
if network.get('mac', None) == client_macaddr:
|
||||
for network in vm.get("networks"):
|
||||
if network.get("mac", None) == client_macaddr:
|
||||
vm_details = vm
|
||||
except Exception:
|
||||
pass
|
||||
|
Reference in New Issue
Block a user