2주차 과제 - 신민경

기존 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` 수정
  1. 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')
    
  2. 밑에 추가

    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'
    
  3. line 3097~3098

                        mixed_case_fields=(
                            'task_state',
                            'power_state',
                            'availability_zone',
                            'host',
                            'project_name',
                            'user_name',
                        ),
    
  4. 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'
    
  5. line 2799~2780

    columns += ('project_name', 'user_name')
    column_headers += ('Project Name', 'User Name')
    
1개의 좋아요