コード例 #1
0
ファイル: cmdbasset.py プロジェクト: itnihao/pytin
    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"
コード例 #2
0
    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("")
コード例 #3
0
ファイル: cmdbasset.py プロジェクト: itnihao/pytin
    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("")
コード例 #4
0
    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"