def view_operating_systems(request): page_title_type = 'object/' page_title_name = 'operating_systems' au = get_authenticated_user(request) (perpage, offset) = get_pag_params(request) payload = {} for k in request.GET: payload[k] = request.GET[k] uri = '/api/operating_systems' log.info('UI requesting data from API={0},payload={1}'.format(uri, payload)) if payload: r = _api_get(request, uri, payload) else: r = _api_get(request, uri) if r: total = r['meta']['total'] operating_systems = r['results'] else: total = 0 operating_systems = [] # Used by the columns menu to determine what to show/hide. column_selectors = [ {'name': 'operating_system_id', 'pretty_name': 'Operating system ID' }, {'name': 'variant', 'pretty_name': 'Variant' }, {'name': 'version_number', 'pretty_name': 'Version Number' }, {'name': 'architecture', 'pretty_name': 'Architecture' }, {'name': 'description', 'pretty_name': 'Description' }, {'name': 'updated_by', 'pretty_name': 'Updated By' }, {'name': 'updated', 'pretty_name': 'Date Updated' }, {'name': 'created', 'pretty_name': 'Date Created' }, ] return {'layout': site_layout('max'), 'page_title_type': page_title_type, 'page_title_name': page_title_name, 'perpage': perpage, 'offset': offset, 'total': total, 'au': au, 'column_selectors': column_selectors, 'operating_systems': operating_systems, }
def view_nodes(request): page_title_type = 'objects/' page_title_name = 'nodes' au = get_authenticated_user(request) (perpage, offset) = get_pag_params(request) payload = {} for k in request.GET: payload[k] = request.GET[k] uri = '/api/nodes' log.info('UI requesting data from API={0},payload={1}'.format(uri, payload)) if payload: r = _api_get(request, uri, payload) else: r = _api_get(request, uri) if r: total = r['meta']['total'] nodes = r['results'] else: total = 0 nodes = [] # Used by the columns menu to determine what to show/hide. column_selectors = [ {'name': 'node_id', 'pretty_name': 'Node ID' }, {'name': 'node_name', 'pretty_name': 'Node Name' }, {'name': 'unique_id', 'pretty_name': 'Unique Id' }, {'name': 'status', 'pretty_name': 'Status' }, {'name': 'node_groups', 'pretty_name': 'Node Groups' }, {'name': 'updated_by', 'pretty_name': 'Updated By' }, {'name': 'updated', 'pretty_name': 'Date Updated' }, {'name': 'created', 'pretty_name': 'Date Created' }, ] return {'layout': site_layout('max'), 'page_title_type': page_title_type, 'page_title_name': page_title_name, 'perpage': perpage, 'offset': offset, 'total': total, 'au': au, 'column_selectors': column_selectors, 'nodes': nodes, }
def view_operating_system(request): page_title = "Operating System" au = get_authenticated_user(request) uri = "/api/operating_systems/{0}".format(request.matchdict["id"]) operating_system = _api_get(request, uri) return {"page_title": page_title, "au": au, "operating_system": operating_system}
def view_hardware_profiles(request): page_title_type = 'objects/' page_title_name = 'hardware_profiles' au = get_authenticated_user(request) (perpage, offset) = get_pag_params(request) payload = {} for k in request.GET: payload[k] = request.GET[k] uri = '/api/hardware_profiles' log.info('UI requesting data from API={0},payload={1}'.format(uri, payload)) if payload: r = _api_get(request, uri, payload) else: r = _api_get(request, uri) if r: total = r['meta']['total'] hardware_profiles = r['results'] else: total = 0 hardware_profiles = [] # Used by the columns menu to determine what to show/hide. column_selectors = [ {'name': 'hardware_profile_id', 'pretty_name': 'Hardware Profile ID' }, {'name': 'manufacturer', 'pretty_name': 'Manufacturer' }, {'name': 'model', 'pretty_name': 'Model' }, {'name': 'updated_by', 'pretty_name': 'Updated By' }, {'name': 'updated', 'pretty_name': 'Date Updated' }, {'name': 'created', 'pretty_name': 'Date Created' }, ] return {'layout': site_layout('max'), 'page_title_type': page_title_type, 'page_title_name': page_title_name, 'perpage': perpage, 'offset': offset, 'total': total, 'au': au, 'column_selectors': column_selectors, 'hardware_profiles': hardware_profiles, }
def view_node(request): page_title = 'Node' au = get_authenticated_user(request) uri = '/api/nodes/{0}'.format(request.matchdict['id']) node = _api_get(request, uri) return {'page_title': page_title, 'au': au, 'node': node, }
def view_tag(request): page_title = 'Tag' au = get_authenticated_user(request) uri = '/api/tags/{0}'.format(request.matchdict['id']) tag = _api_get(request, uri) return {'page_title': page_title, 'au': au, 'tag': tag, }
def view_status(request): page_title = 'Status' au = get_authenticated_user(request) uri = '/api/statuses/{0}'.format(request.matchdict['id']) status = _api_get(request, uri) return {'page_title': page_title, 'au': au, 'status': status, }
def view_hardware_profile(request): page_title_type = 'objects/' page_title_name = 'hardware_profile' au = get_authenticated_user(request) uri = '/api/hardware_profiles/{0}'.format(request.matchdict['id']) hardware_profile = _api_get(request, uri) return {'page_title_type': page_title_type, 'page_title_name': page_title_name, 'au': au, 'hardware_profile': hardware_profile, }
def api_node_register(request): """Process registration requests for the /api/register route.""" au = get_authenticated_user(request) log.info('Registering new node') try: payload = request.json_body # Get the hardware_profile_id or create if it doesn't exist. try: manufacturer = payload['hardware_profile']['manufacturer'] model = payload['hardware_profile']['model'] # FIXME: remove the http call uri = '/api/hardware_profiles' data = {'manufacturer': manufacturer, 'model': model } hardware_profile = _api_get(request, uri, data) try: hardware_profile_id = hardware_profile['results'][0]['hardware_profile_id'] except IndexError: log.debug('hardware_profile not found, creating') hardware_profile = create_hardware_profile(manufacturer, model, au['user_id']) hardware_profile_id = hardware_profile.hardware_profile_id log.debug('hardware_profile is: {0}'.format(hardware_profile)) except Exception as e: log.error('Unable to determine hardware_profile manufacturer={0},model={1},exception={2}'.format(manufacturer, model, e)) raise # Get the operating_system_id or create if it doesn't exist. try: variant = payload['operating_system']['variant'] version_number = payload['operating_system']['version_number'] architecture = payload['operating_system']['architecture'] description = payload['operating_system']['description'] # FIXME: remove the http call uri = '/api/operating_systems' data = {'variant': variant, 'version_number': version_number, 'architecture': architecture, 'description': description } operating_system = _api_get(request, uri, data) try: operating_system_id = operating_system['results'][0]['operating_system_id'] except IndexError: log.debug('operating_system not found, attempting to create') operating_system = create_operating_system(variant, version_number, architecture, description, au['user_id']) operating_system_id = operating_system.operating_system_id log.debug('operating_system is: {0}'.format(operating_system)) except Exception as e: log.error('Unable to determine operating_system variant={0},version_number={1},architecture={2},description={3},exception={4}'.format(variant, version_number, architecture, description, e)) raise # if sent, Get the ec2_object or create if it doesn't exist. ec2_id = None if payload['ec2']: try: ec2_instance_id = payload['ec2']['ec2_instance_id'] ec2_ami_id = payload['ec2']['ec2_ami_id'] ec2_hostname = payload['ec2']['ec2_hostname'] ec2_public_hostname = payload['ec2']['ec2_public_hostname'] ec2_instance_type = payload['ec2']['ec2_instance_type'] ec2_security_groups = payload['ec2']['ec2_security_groups'] ec2_placement_availability_zone = payload['ec2']['ec2_placement_availability_zone'] # FIXME: remove the http call uri = '/api/ec2_objects' data = {'ec2_instance_id': ec2_instance_id, 'exact_get': True, } ec2 = _api_get(request, uri, data) try: ec2_id = ec2['results'][0]['ec2_id'] except IndexError: log.debug('ec2_object not found, attempting to create') ec2 = create_ec2_object(ec2_instance_id, ec2_ami_id, ec2_hostname, ec2_public_hostname, ec2_instance_type, ec2_security_groups, ec2_placement_availability_zone, au['user_id']) ec2_id = ec2.ec2_id log.debug('ec2_object is: {0}'.format(ec2)) except Exception as e: log.error('Unable to determine ec2_object ec2_instance_id={0},exception={1}'.format(payload['ec2']['ec2_instance_id'], e)) raise try: unique_id = payload['unique_id'].lower() node_name = payload['node_name'] uptime = payload['uptime'] log.debug('Searching for node unique_id={0}'.format(unique_id)) n = DBSession.query(Node) n = n.filter(Node.unique_id==unique_id) n = n.one() except NoResultFound: try: log.info('Creating new node node_name={0},unique_id={1}'.format(node_name, unique_id)) utcnow = datetime.utcnow() n = Node(unique_id=unique_id, node_name=node_name, hardware_profile_id=hardware_profile_id, operating_system_id=operating_system_id, uptime=uptime, status_id=2, ec2_id=ec2_id, updated_by=au['user_id'], created=utcnow, updated=utcnow) DBSession.add(n) DBSession.flush() except Exception as e: log.error('Error creating new node node_name={0},unique_id={1},exception={2}'.format(node_name, unique_id, e)) raise else: try: log.info('Updating node: {0}'.format(unique_id)) n.node_name = node_name n.hardware_profile_id = hardware_profile_id n.operating_system_id = operating_system_id n.ec2_id = ec2_id n.uptime = uptime n.updated_by=au['user_id'] DBSession.flush() except Exception as e: log.error('Error updating node node_name={0},unique_id={1},exception={2}'.format(node_name, unique_id, e)) raise return n except Exception as e: log.error('Error registering new node API={0},exception={1}'.format(request.url, e)) return Response(str(e), content_type='application/json', status_int=500)