오픈소스 컨트리뷰션 5번째 스프린트 활동 : 본격 오픈스택 버그 해결하기

활동 시작한지 얼마 안된 것 같은데 벌써 추석이 코앞에 다가왔다.

하지만 추석과 별개로 오픈스택팀은 여지없이 스프린트를 하게 되었고, 오픈스택에서 본격적으로 올라온 버그들을 해결하기 위해 작업을 진행하게 었다.

이번 주 활동은 주로 4개로 압축되었다.

  1. 먼저 버그 찾기
  2. 버그 분석
  3. 버그 원인 해결하기
  4. 5주차 결과 종합

그런데 결과만 말하자면, 이번 주 내에 원하는 결과는 해결하지 못했다.

그럼에도 배운 것들이 있어 오늘 기록은 큰 의미가 있을 것이다.

(있어야한다,,, 스프린트 8시간 동안 버그 한 개 해결하려고 코드를 몇 줄이나 봤는지,,, IDE을 잘 사용하는 것이 정말 중요하다는 걸 깨닫게 된 하루다.)

1. 먼저 버그 찾기

5주차 팀 업무는 이제 멘토님이 각 멘티들에게 해야할 일을 분담해주는 게 아니라 스스로 스토리보드에서 해결해 볼 수 있을 것으로 보이는 버그들을 찾아내고, 그 버그들을 이번 주 팀 회의 날에 가져와 해결할만한 일인지, 이미 해결한 일인지를 판단하는 작업이었다.

각 레포 별로 다음과 같은 스토리 보드 이슈들이 올라와 있었다.

다만, 현재 해결해 볼 수 있는 가장 유력한 후보로 CLI의 — mask가 작동되지 않는다는 버그를 선택하게 되었고, 곧 이 버그가 단순히 눈에 보이는 코드 에러 이상의 많은 것들을 고쳐야한다는 것을 알게 된다.

- SDK : KeyError: 'owner' when trying to get server details using id- CLI : --mask doesn't take effect- OSC-LIB : python-openstackclient loops through all the images when a image is not available

2. 버그 분석하기

지난 주와 이번 주에 거쳐서 코딩 테스트가 있다보니 많은 시간을 할애하지는 못했지만, 기본적으로 에러의 요지는 다음과 같다.

오픈 스택의 명령어 중에 openstack configuration show — mask 가 있고, 이 명령어를 사용하면 패스워드를 가려서 설정을 보여주게끔 하는 것인데, 해당 값이 패스워드가 그대로 노출되는 상황이다.
> openstack configuration show — mask

생각보다 쉽게 고칠 수 있을 것 같아서 내가 선택한 것이었고, 나는 처음에 코드를 다음과 같이 고쳤다.

3. 버그 원인 해결하기

for secret_opt in secret_opts:
if secret_opt in info and parsed_args.mask:
info[secret_opt] = REDACTED

코드는 기본적으로 위와 같이 작성했고, 비밀번호는 아래와 같이 가려진다.

| password  | <redacted> |

- 그러나 tox를 사용해서 오픈스택의 테스트 케이스를 돌려보면, 문제가 발생한다.

- 테스트 케이스에서 테스트하는 양식과 configuration.py의 take_action 함수의 info 변수와 내용이 다른 상황이었다.

즉, 테스트 케이스를 수정해서 커밋해야하는 보다 더 어려운 상황이었던 것.

4. 5주차 결과

5주차 스프린트 데이 내내 해당 문제를 갖고 어느 부분에서 값이 잘못 전달되는지 찾고자 했으나, 내가 찾지는 못했다.

멘토님이 발견하셨는데, 발견하는 과정을 잘 살펴보면 파이참의 디버깅 모드를 정말 잘 활용하는 것을 볼 수 있었다.

나는 약간 멘땅에 해당하는 느낌으로 코드 파일을 일일이 다 찾아다녔는데, 작업 생산성을 높이려면 디버깅을 잘 활용하는 것이 매우 중요한 것으로 보인다.

결국 아직 코드 수정은 못했는데 최대한 추석 내에 해결하고, 다음 주 목요일 미팅 때 한 번 결과 보고를 해보는 방식으로 접근해야겠다.

5. 후기

상황에 따라 테스트 케이스를 수정하고 커밋하는 것도 컨트리뷰션이라고 한다.

이번 주 성과가 없어서 매우 낙담했는데, 멘토님이 잘 격려해주신 덕분에 성과가 없더라도 오늘 코드를 찾아갔던 과정을 잘 기록하면 그것 자체가 성장에 큰 기여를 할 것이라고 했다.

유독 느낀 부분들이 많지만, 파이참이 제공하는 IDE의 디버깅 모드를 활용하는 방법이 조금 더 다양하게 있다.

Tox 테스트 케이스 돌리는 것도 디버깅 모드에서 조절하던데 스프린트 때 워낙 코드 찾는 것에 집중하다보니 제대로 못 본 게 조금 아쉽다.

5주차에 에러를 잡고 갔으면 조금 여유가 있었을텐데 아쉽다.

스토리보드에서 glance의 pyhton-openstackclient, sdk, osc_lib 3개 레포에 관한 버그를 찾아서 해결하는 것을 신규 과제로 주어졌다.

먼저 지금 해결 중인 에러를 잡고, glance에서 발생하는 에러들도 해결해 나가보자.

Ryan

--

--

Software Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store