OpenStack 소스레벨 접근하기


[inatall script]


[API 사용하기]

# dev Doc

# SDK

- jcloud : 클라우드 관련하여 거의 모든 소스를 커버하고있음

  > github에 올라간 잘 짜여진 예제 소스들 참고하자!

- pkgcloud 


[contribute]

- openstack.org에서 회원으로 가입 한 후 개발자커뮤니티와 연동하여 개발

- 슬쉐에 공유된 부대표님 ppt보고 해보자


[writings]

- 개발자가 알아야할 가상화 정보를 많이... 가이드? 해주고있다..


-----------------------------------------------------------------------------------------



1. keystone

 $ keystone user-list

 $ keystone --debug user-list
   : curl부분이 실제 실행되는 부분

root@ubjuno-contnet:~# which keystone
/usr/bin/keystone

$ vi /usr/bin/keystone

* 다른곳의 소스를 imporing만 하고있음.
그부분을 찾자!


root@ubjuno-contnet:~# ps -ef | grep keystone
keystone  2471     1  3 19:42 ?        00:01:03 /usr/bin/python /usr/bin/keystone-all
keystone  3849  2471  0 19:43 ?        00:00:00 /usr/bin/python /usr/bin/keystone-all
keystone  3850  2471  0 19:43 ?        00:00:00 /usr/bin/python /usr/bin/keystone-all
keystone  3851  2471  0 19:43 ?        00:00:00 /usr/bin/python /usr/bin/keystone-all
keystone  3852  2471  0 19:43 ?        00:00:00 /usr/bin/python /usr/bin/keystone-all
root      9110  8463  0 20:17 pts/1    00:00:00 grep --color=auto keystone
root@ubjuno-contnet:~#
root@ubjuno-contnet:~# which keystone-all
/usr/bin/keystone-all
root@ubjuno-contnet:~#
root@ubjuno-contnet:~# vi /usr/bin/keystone-
keystone-all     keystone-manage
root@ubjuno-contnet:~# vi /usr/bin/keystone-all

* main을 찾아요. main이 구현되어있음.

* wsgi, 데몬으로 서비스가 http프로토콜의 경우 웹서버를 띄우지 않아도 웹서버에 올려준거처럼 되어있음
(일반적으로 wsgi는 웹서버의 기능을 떼어 위의 부가서비스들을 따로 운영하게 한다. 미니멀을 지향?, 해당 부가서비스들은 쓰레드로 동작되어 콜되어지는 형태)
* monkeypatch
 - use_eventlet()에 넣어서 돌리면 스레드를 돌려서(green이라는 스레드 풀같은걸로) wsgi로 올려서 OpenStack상의 데몬을 띄운다.


=>임베디드 어쩌고저쩌고?


* 웹에서 쓰레드가 필요한 이유...? 웹서비스들을 스레드로 돌려야 가벼움(자원을 공유하므로)


* admin_workers / public_workers를 구분하여 

server로 ㄱㄱ


root@ubjuno-contnet:~# vi /usr/lib/python2.7/dist-packages/keystone/openstack/common/service.py

- python 2,3버전 대는 완전 다름.
- 소스단에서의 가상화라는 것을 제공하는데(3버전), 가상화하여 묶어서 소스영향력을 줄인다.

* 파이썬 라이브러리들은 지속가능한 걸 선호해야함(너무 금방 사라져버리니까.. 안정화된 걸 골라써야햇)

* tree명령어로 keystone 구조보기
$ tree -L 1 /usr/lib/python2.7/dist-packages/keystone

* 파이썬도 컴파일을 하면 중간코드 형태로 파일이 떨어진다. (.pyc)
*

root@ubjuno-contnet:~# tree -L 1 /usr/lib/python2.7/dist-packages/keystone/auth/
/usr/lib/python2.7/dist-packages/keystone/auth/
├── controllers.py
├── controllers.pyc
├── core.py
├── core.pyc
├── __init__.py
├── __init__.pyc
├── plugins
├── routers.py
└── routers.pyc

1 directory, 8 files


root@ubjuno-contnet:~# tree -L 1 /usr/lib/python2.7/dist-packages/keystone/assignment/
/usr/lib/python2.7/dist-packages/keystone/assignment/
├── backends
├── controllers.py
├── controllers.pyc
├── core.py
├── core.pyc
├── __init__.py
├── __init__.pyc
├── routers.py
├── routers.pyc
├── schema.py
└── schema.pyc

1 directory, 10 files


root@ubjuno-contnet:~# tree -L 1 /usr/lib/python2.7/dist-packages/keystone/assignment/backends/
/usr/lib/python2.7/dist-packages/keystone/assignment/backends/
├── __init__.py
├── __init__.pyc
├── kvs.py
├── kvs.pyc
├── ldap.py
├── ldap.pyc
├── sql.py
└── sql.pyc

0 directories, 8 files

* identity controllers : 메소드와 url을 매핑해주는 로직
- v2 deprecated... 
- v3_to_v2() : 현재 버전 2를 버리지 못하고 해당 함수등을 사용해서 v3로 그냥 맵핑을 시켜주는 형태로 가고있음. 나중에 v2는 한번에 버릴 수 있겠지..

root@ubjuno-contnet:~# vi /usr/lib/python2.7/dist-packages/keystone/assignment/backends/sql.py
* sql 만들기
* create table...
=> DDL, SQL RPM .. 왜 이부분에 프로그래머블하게 SQL을 만들어서 쿼리하는 식으로 가는건가?
-> 결론... sql을 몰라도 (여러 DB를 다룰때..) 정책적으로 SQL 생성이 가능하도록...



# ERD 

여기까지 MVC!
-------------------------------------------------------------------------

root@ubjuno-contnet:~# vi /usr/lib/python2.7/dist-packages/neutron/plugins/openvswitch/agent/ovs_neutron_agent.py
: ovs를 구동시키는 소스들이 다 들어있네

* 전통적인 아주 예전 스타일의 소스코드 스타일인 이유.... 
- 스레드 풀을 받아오기 위해 일수있어,
- 하지만 인프라에대한 소스인데 어쩜 이럴 수 있지?


root@ubjuno-contnet:~# vi /usr/lib/python2.7/dist-packages/neutron/agent/dhcp_agent.py
* dhcp agent
- 런처(server)처럼 떠있다가 dnsmasq를 제어하는 형식





할거 많다...............

------------------------------------------------------------------
 453  tree -L 1 /usr/lib/python2.7/dist-packages/
 454  tree -L 1 /usr/lib/python2.7/dist-packages/keystone
 455  tree -L 1 /usr/lib/python2.7/dist-packages/keystone/auth/
 456  tree -L 1 /usr/lib/python2.7/dist-packages/keystone/middleware/
 457  tree -L 1 /usr/lib/python2.7/dist-packages/keystone/assignment/
 458* tree -L 1 /usr/lib/python2.7/dist-packages/keystone/assignment/b
 459  tree -L 1 /usr/lib/python2.7/dist-packages/




------------------------------------------------------------------

[이 외...]

oslo
분산처리
하둡
디자인패턴

파이썬 <-> R 











+ Recent posts