4주차 과제 - 김소연(2)

openstack volume group CRUD functional test 구현하기

  • path: python-openstackclient/openstackclient/tests/functional/volume/v3/test_volume_group.py

test_volume_group.py

  • import time
    import uuid
    
    from openstackclient.tests.functional.volume.v3 import common
    
    
    class VolumeTypeTests(common.BaseVolumeTests):
        """Functional tests for volume group."""
    
        # Create
        def test_volume_group_create_list(self):
            volume_group_type = uuid.uuid4().hex
            self.openstack('volume group type create ' + volume_group_type)
    
            volume_type = 'lvmdriver-1'
    
            name = uuid.uuid4().hex
            cmd_output = self.openstack(
                f'volume group create {volume_group_type} {volume_type} --name {name}',
                parse_output=True, 
            )
    
            self.assertEqual(name, cmd_output['Name'])
    
            # Read
            cmd_output = self.openstack('volume group list', parse_output=True)
            self.assertIn(name, [t['Name'] for t in cmd_output])
    
            #Update
            new_name = uuid.uuid4().hex
            md_output = self.openstack(
                f'volume group set {name} --name {new_name}',
                parse_output=True,
            )
    
            cmd_output = self.openstack('volume group list', parse_output=True)
            self.assertIn(new_name, [t['Name'] for t in cmd_output])
    
            # Delete
            self.addCleanup(
                self.openstack,
                'volume group type delete ' + volume_group_type,
            )
    
            self.addCleanup(
                self.openstack,
                'volume group delete ' + new_name,
            )
    
    
    
  • volume group 삭제 후 volume group type 삭제(addCleaup은 역순으로 동작)

openstack CLI 흐름

openstack volume group type create <volume_group_type>

----------------assertEqual()--------------------

openstack volume group create <volume_group_type> <volume_type> --name test1

openstack volume group list

----------------assertIn()--------------------

openstack volume group set test1 --name test2

openstack volume group list

----------------assertIn()--------------------


openstack volume group delete test2

openstack volume group type delete <volume_group_type>

인증 정보 변경

  • clouds.yaml
  devstack:
    auth:
      auth_url: http://180.210.83.106/identity
      project_name: admin
      project_domain_id: default
      username: admin
      user_domain_id: default
      password: <password>
    region_name: RegionOne
    volume_api_version: 3.14.  # volume group cli 사용 위해 추가
  • base.py
ADMIN_CLOUD = os.environ.get('OS_ADMIN_CLOUD', 'devstack')

functional test 실행 명령어

tox -e functional -- openstackclient.tests.functional.volume.v3.test_volume_group -v

실행 결과