Tagged: ucloud

kt ucloud storage api 문제점


kt ucloud storage api를 위한 클라이언트를 하나 만들던 중 발견한 문제점들을 기록해 둔다.

X-Auth-(User|Key)

‘X-Storage-User’는 ‘X-Auth-User’로 대체 사용이 가능하며, ‘X-Storage-Pass’ 역시
‘X-Auth-Key’ 대체 사용이 가능하며 이들간의 혼용도 가능하다.

500 에러 난다. 해결된 듯 하다.

HEAD 메서드에 Accept 가 필요하다?

아무래도 HEAD 기능을 따로 만들지 않고 GET 으로 대체하는 듯 하다.
(없어도 된다는) ?format= 을 명시적으로 붙이면 잘 되는지 모르겠지만 Accept: text/plain 으로 사용하였다. wildcard(*/*)도 되는 듯 하다.

header capitalization

“HTTP header 는 case-insensitive하니까 정상임!”. 뭐 이따구 응답밖에 없다.
제공되는 SDK로 때려봐도 사용자측에서 정상적으로 사용할 수 없다.

updating meta: {aA=A, bb=b}
retrieved meta: {Aa=A, Bb=b}

asynchronous processing?

서버측에서 asynchronous 하게 처리되는 듯 하다. 예를 들어, container에서 단 하나 뿐인 object를 삭제한 후(204) 곧바로 container를 삭제하면 때때로 409가 날라온다.

auth token!!!

이건 가장 짜증나고 어려운 문제이다.

you’re expired!!!

왜 token에 expiration을 두었는지는 대충 이해가 간다. 매번 새로운 token 을 생성해 주고 계속 쌓이는 놈들 삭제하기 귀찮았거나 token을 저장해 두고 계속 사용하는 사람들 때문에 삭제 루틴이 귀찮아서였겠지.
하지만 이 시점에, 누군지, 매우 병신같은 해결책을 만들었다. 24시간 이후 expire되는 토큰을 재사용하는 것은 상관 없는데 (클라이언트쪽에서는 상관할 바가 아닌데), 한 계정에서 다수의 토큰을 (X-Auth-New-Token 헤더를 사용해서) 생성할 수 없다. X-Auth-New-Token을 사용하는 순간 기존토큰을 사용하는 세션들은 좆된다. 이 기존 세션들이 또 다시 X-Auth-New-Token을 사용하는 순간 또 다는 세션들이 좆된다.
X-Auth-New-Token 헤더를 사용하지 않고 서버에서 주는대로 사용한다 하더라로 24시간이 되는 그 시점이 어떤 행동을 할 지 명시되지 않았다. 24-t 에 토큰을 받고 24+t 시점에 사용을 하게 될 경우 (t is minimum) 어떻게 동작하는지 의문스럽다.

use reseller?

리셀러 서비스를 사용하는 것도 동일한 문제점이 있다. 특정 사용자를 생성하고, 권한을 부여한 후, 사용한다고 해도 토큰이 expire되는 순간 어떻게 동작할 지 의문이다.

what now?

현재 가능한 시나리오는 매번 random 한 reseller user를 생성한 후 그 user에 특정 container에 대한 접근 권한(read/write)를 부여 한 후 작업을 수행한 후 그 user를 삭제하는 것이다. 이런 썅…

DIY

리셀러 서비스와 관련된 user및 권한 관리 메뉴는 없다. 제공되는 sdk에도 없다. 문의해 보면 ‘…pdf 어디어디를 참고해주세요’라는 답변만 돌아온다.

리셀러 서비스

최초 생성한 유저(admin) 계정으로 자기 자신을 삭제할 수 있다. 리셀러 서비스 날라가는 것은 물론이거니와 UI 도 먹통이 된다. 헐…… 이걸 도대체…..이렇게 만들기도 힘들겠다.

고객 문의

문의를 넣어보는 것 자체가 시간 낭비다.

i’m paying for myself!!!

이런걸 돈을 내고 사용할 수 밖에 없는 현실이 싫다. kt에 그 많은 Ph.D. 들은 뭐하고 사는지 궁금하다.

olleh ucloud biz ubuntu data disk


references

fdisk

host:~$ ls -l /dev/xvd*
brw-rw---- 1 root disk 202,  0 2012-09-18 12:15 /dev/xvda
brw-rw---- 1 root disk 202,  1 2012-09-18 12:15 /dev/xvda1
brw-rw---- 1 root disk 202,  2 2012-09-18 12:15 /dev/xvda2
brw-rw---- 1 root disk 202, 16 2012-09-18 12:15 /dev/xvdb
host:~$ sudo fdisk /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xec499834.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-10443, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-10443, default 10443):
Using default value 10443

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
host:~$

mkfs

host:~$ sudo mkfs /dev/xvdb1 -t ext4
host:~$

/etc/fstab

host:~$ sudo mkdir /data
host:~$ mount /dev/xvdb1 /data -t ext4
host:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system>                           <mount point>   <type>  <options>           <dump>  <pass>
proc                                      /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/xvda1 during installation
UUID=blar blar blar                       /               ext3    errors=remount-ro   0       1
# swap was on /dev/xvda2 during installation
UUID=blar blar blar                       none            swap    sw                  0       0

/dev/xvdb1                                /data           ext4    defaults            0       0
host:~$ shutdown -r now
host:~$

olleh ucloud biz ubuntu account


KT olleh ucloud biz 서버를 구매하면 기본으로 root 계정을 사용하게끔 되어 있는 것 같다.

add new adminsudo user

root@xxx:~$ useradd <username> -m -s /bin/bash
root@xxx:~$ passwd <username>
Password:
Retype new password:
passwd: password updated successfully
root@xxx:~$ adduser <username> sudo
Adding user `<username>' to group 'sudo' ...
Adding user <username> to group sudo
Done.
root@xxx:~$

disable root account

username@host:~$ sudo passwd -l root
passwd: password expiry information changed.
username@host:~$