기존 server list 출력
(OCA-OpenStack) minkyoungshin@Minkyoung-MacBook-Air OCA-OPENSTACK % openstack server list
+--------------------------------------+-----------------+--------+----------------------------------------+--------------------------+-----------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-----------------+--------+----------------------------------------+--------------------------+-----------+
| 182eef16-2d78-41c0-a962-c2e75cfc0699 | cirros-instance | ACTIVE | shared=192.168.100.59, 192.168.233.187 | N/A (booted from volume) | cirros256 |
+--------------------------------------+-----------------+--------+----------------------------------------+--------------------------+-----------+
python-openstackclient의 server list Class를 수정하여 위 결과값에 project name , user name을 포함시켜서 출력되게 해주세요.
python-openstackclient/openstackclient/compute/v2/server.py
→ `ListServer` 클래스의 `take_action` 수정
-
line 3052~3053
if any([s.host_status is not None for s in data]): columns += ('Host Status','project_name', 'user_name',) column_headers += ('Host Status', 'Project Name', 'User Name') -
밑에 추가
project_cache = {} user_cache = {} for s in data: # project_name if hasattr(s, 'project_id'): pid = s.project_id if pid in project_cache: s.project_name = project_cache[pid] else: try: project = identity_client.projects.get(pid) s.project_name = project.name project_cache[pid] = project.name except Exception: s.project_name = 'Unknown' # user_name if hasattr(s, 'user_id'): uid = s.user_id if uid in user_cache: s.user_name = user_cache[uid] else: try: user = identity_client.users.get(uid) s.user_name = user.name user_cache[uid] = user.name except Exception: s.user_name = 'Unknown' -
line 3097~3098
mixed_case_fields=( 'task_state', 'power_state', 'availability_zone', 'host', 'project_name', 'user_name', ), -
line 3034~3047
# Add a list with security group name as attribute for s in data: try: project = identity_client.projects.get(s.project_id) s.project_name = project.name except Exception: s.project_name = 'N/A' try: user = identity_client.users.get(s.user_id) s.user_name = user.name except Exception: s.user_name = 'N/A' -
line 2799~2780
columns += ('project_name', 'user_name') column_headers += ('Project Name', 'User Name')
