openstack victoria heat vpn 서비스 생성 에러 픽스

| 2020년 11월 30일 | 0 Comments

오픈스택 victoria 버전이 출시된지 한달이 좀 넘었습니다.

테스트중에 여러 버그가 확인 되었으며 그 중 heat로 vpn 서비스 생성시 pending_create 상태로 hang 걸려서 time out으로 failed로 빠지는 버그가 확인되었습니다.

원인은 소스에서 vpn 서비스 상태가 active 일때만 다음 단계로 넘어가게 코딩 되어 있어서 발생 했으며 vpn 특성상 peer 상태 및 siteconnection 상태에 따라 pending_create 상태가 지속 될수 있어서 pending_create 상태일때도 skip 할수 있게 소스를 수정 해야 합니다.

해당 문제는 파이썬 소스도 같이 수정하고 관련된 서비스 재시작까지 완료해야 합니다.

오픈 스택 테스트는 CentOS 8 버전에서 테스트 되었습니다.

 


 

  • 에러 내용

    # heat stack-create -f vpn_create_jyh.yaml -r –poll 1 -t 2 jyh_vpn
    WARNING (shell) “heat stack-create” is deprecated, please use “openstack stack create” instead
    WARNING (shell) “heat stack-list” is deprecated, please use “openstack stack list” instead
    +————————————–+————-+——————–+———————-+————–+
    | id | stack_name | stack_status | creation_time | updated_time |
    +————————————–+————-+——————–+———————-+————–+
    | 1f0a93b5-4a95-442b-bfb0-ba84ee2679f3 | jyh_vpn_net | CREATE_COMPLETE | 2020-11-10T01:50:50Z | None |
    | 3342f119-93b3-403b-b2e7-8c1d74f6c717 | jyh_vpn | CREATE_IN_PROGRESS | 2020-11-10T06:00:26Z | None |
    +————————————–+————-+——————–+———————-+————–+
    ..
    ..
    2020-11-10 06:02:26Z [jyh_vpn.VPNService]: CREATE_FAILED CREATE aborted (Task create from VPNService “VPNService” Stack “jyh_vpn” [3342f119-93b3-403b-b2e7-8c1d74f6c717] Timed out)
    ..
    b’\n Stack jyh_vpn CREATE_FAILED \n’

    # openstack vpn service list
    +————————————–+———+————————————–+————————————–+——–+——-+—————-+
    | ID | Name | Router | Subnet | Flavor | State | Status |
    +————————————–+———+————————————–+————————————–+——–+——-+—————-+
    | 36d86564-c047-4e64-a5f6-f5c1df523da9 | jyh_vpn | 581d2f9a-efdb-4d17-ad0a-68321a8dd660 | 9eada429-6b16-4731-bdde-99b122209ec8 | None | True | PENDING_CREATE |
    +————————————–+———+————————————–+————————————–+——–+——-+—————-+

  • 소스 수정

    # cat -n /usr/lib/python3.6/site-packages/heat/engine/resources/openstack/neutron/vpnservice.py
    ..
    ..
    197 def check_create_complete(self, data):
    198 attributes = self._show_resource()
    199 status = attributes[‘status’]
    200 if status == ‘PENDING_CREATE’:
    201 return False
    202 elif status == ‘ACTIVE’:
    203 return True
    204 elif status == ‘ERROR’:
    ..
    ..
    460 def check_create_complete(self, data):
    461 attributes = self._show_resource()
    462 status = attributes[‘status’]
    463
    464 if status == ‘PENDING_CREATE’:
    465 return False
    466 elif status == ‘ACTIVE’:
    467 return True
    468 elif status == ‘ERROR’:
    # 변경전

    # cat -n /usr/lib/python3.6/site-packages/heat/engine/resources/openstack/neutron/vpnservice.py
    ..
    ..
    197 def check_create_complete(self, data):
    198 attributes = self._show_resource()
    199 status = attributes[‘status’]
    200 if status == ‘PENDING_CREATE’:
    201 return True
    202 elif status == ‘ACTIVE’:
    203 return True
    204 elif status == ‘ERROR’:
    ..
    ..
    460 def check_create_complete(self, data):
    461 attributes = self._show_resource()
    462 status = attributes[‘status’]
    463
    464 if status == ‘PENDING_CREATE’:
    465 return True
    466 elif status == ‘ACTIVE’:
    467 return True
    468 elif status == ‘ERROR’:
    # 변경후

  • 서비스 재시작
    [root@controller heat_template]# systemctl restart openstack-heat-engine.service openstack-heat-api openstack-heat-api-cfn.service

Category: 가상화/클라우드

장영호

About the Author ()