def _handle_rack(self, *args, **options): rack_ids = options['id'] query = {} if len(rack_ids) > 0: query['pk__in'] = rack_ids for rack in Rack.active.filter(**query): if options['set_size']: rack.size = options['set_size'] elif options['layout']: print "*** {:^44} ***".format( "%s::%s (id:%s)" % (rack.parent if rack.parent else 'global', rack, rack.id)) unsorted_servers = [] for rack_resource in rack: if RackMountable.is_rack_mountable(rack_resource): unsorted_servers.append(rack_resource) sorted_servers = sorted(unsorted_servers, key=lambda s: s.position, reverse=True) if len(sorted_servers) <= 0: continue # sorted_servers must be sorted by position in reverse order rack_layout_map = {} curr_position = rack.size # max position for sorted_server in sorted_servers: curr_pos = sorted_server.position if not curr_pos: logger.warning("Server %s position is not set." % sorted_server) if curr_pos in rack_layout_map: while curr_pos in rack_layout_map: curr_pos += 1 sorted_server.position = curr_pos rack_layout_map[sorted_server.position] = sorted_server if sorted_server.position > curr_position: curr_position = sorted_server.position while curr_position > 0: if curr_position in rack_layout_map: server = rack_layout_map[curr_position] print "[{:>3s}| {:<40s} |{:s}]".format(unicode(server.position), server, 'o' if server.on_rails else ' ') else: print "[{:>3s}|{:-^46s}]".format(unicode(curr_position), '') curr_position -= 1 # print free space while curr_position > 0: print "[{:>3s}|{:-^46s}]".format(unicode(curr_position), '') curr_position -= 1 print "\n"
def _handle_rack_unit(self, *args, **options): server = self._get_server_by_ip_or_id(options['ip-or-id']) assert RackMountable.is_rack_mountable(server) for option_name in options: if option_name.startswith('set_'): prop_name = option_name[4:] if options[option_name]: server.set_option(prop_name, options[option_name]) self._dump_server(server) logger.info("")
def _handle_rack(self, *args, **options): rack_ids = options['id'] query = {} if len(rack_ids) > 0: query['pk__in'] = rack_ids for rack in Rack.active.filter(**query): if options['set_size']: rack.size = options['set_size'] elif options['layout']: print "*** {:^44} ***".format( "%s::%s (id:%s)" % (rack.parent if rack.parent else 'global', rack, rack.id)) unsorted_servers = [] for rack_resource in rack: if RackMountable.is_rack_mountable(rack_resource): unsorted_servers.append(rack_resource) sorted_servers = sorted(unsorted_servers, key=lambda s: s.position, reverse=True) if len(sorted_servers) <= 0: continue # sorted_servers must be sorted by position in reverse order rack_layout_map = {} curr_position = rack.size # max position for sorted_server in sorted_servers: curr_pos = sorted_server.position if not curr_pos: logger.warning("Server %s position is not set." % sorted_server) if curr_pos in rack_layout_map: while curr_pos in rack_layout_map: curr_pos += 1 sorted_server.position = curr_pos rack_layout_map[sorted_server.position] = sorted_server if sorted_server.position > curr_position: curr_position = sorted_server.position while curr_position > 0: if curr_position in rack_layout_map: server = rack_layout_map[curr_position] print "[{:>3s}| {:<40s} |{:s}]".format( unicode(server.position), server, 'o' if server.on_rails else ' ') else: print "[{:>3s}|{:-^46s}]".format( unicode(curr_position), '') curr_position -= 1 # print free space while curr_position > 0: print "[{:>3s}|{:-^46s}]".format(unicode(curr_position), '') curr_position -= 1 print "\n"