My personal views, thoughts and opinions.

Tuesday, April 28, 2015

Diego's Docker Registry in Cloud Foundry

Into Cloud Foundry

In the middle of 2014 together with Georgi Sabev I started working on a new project inside SAP. We wanted to have Private Docker Registry in SAP HANA Cloud Platform (HCP). But priorities shifted and in the end of 2014 we adopted Cloud Foundry to enable us to add some new features in HCP.

Being part of the Cloud Foundry Foundation, SAP wanted to contribute back and in the same time eat its own dog food. So it was decided that we will learn the Pivotal way by participating the Cloud Foundry Dojo

Diego

The Dojo was extremely helpful. It allowed us to meet great people in Pivotal and in particular the guys working on Diego

If you want to know more about Diego you can check Onsi's last year talk on CF Summit. And if this is not enough go see the design notes.

New Project

Being 10 hours away from where the action is (875 Howard), we started implementing a new feature in Diego, aiming to:
  • guarantee that we fetch the same layers when the user scales an application up.
  • guarantee uptime (if the docker hub goes down we shall be able to start a new instance)
  • support private docker images (access to them require credentials)
The goals also include:
  • enabling the use of private docker images
  • highly available backends
  • effective image management

How?
  
We decided to simply cache the docker images in Docker Registry.
 
Why?

Because by caching the images we can ensure:
  • consistent and faster scale-up
  • uptime without Docker Hub
  • support for private docker images

Private Docker Images

The caching really helps for supporting private images, although this is not obvious.

Normally we need credentials to access Docker Hub and pull the image on every scale-up request. This would mean storing credentials in DB or requiring them on every user request. That is insecure and inconvenient for the users, operators and developers.

We already have the image cached, so can we simply pass the credentials to Docker Hub on staging and then throw them away? Sure -  all subsequent scale up requests will not need access to the Hub in this way.

MVP0

The MVP consists of two parts:
To try it locally you need to install CF, then Diego and finally Docker Registry. You may follow the short guide we provide, which will redirect you to Diego readme for CF and Diego installation.

You can check the registry readme on how to push & cache your docker image. The MVP0 requires you to opt-in for caching of your docking image. That's because we need your feedback about the feature, before we really make it productive in Diego.

If you are lazy like me and just want to see it in action, watch this full length (1:23) video.

The Docker Registry also provides small test suite to check if the registry works correctly.

CF Summit 2015

Georgi Sabev will present the Docker Registry on the CF Summit 2015. If you want to know more, to get in touch about a bug/feature or buy him a drink, please join the session.

Friday, April 17, 2015

Лондон

Едно време. Ееех едно време. Пишех кратко и ясно. Не като сегашното разпъване на локуми. Та понеже исках да запиша спомените си докато са пресни, а и си спомних за Магията на пътуването на Бистра и Наце се реших на нещо подобно. Но реших да е кратко и ясно. Преди всичко кратко. Да видим ...

Зимата на 2014-та. 
Фейса подсказа, че Девин прави мюзикъл в Лондон. Ентусиазъм. Решение. Купени билети за Royal Albert Hall. Удобен полет? И евтин? Wizz.

Пролет 2015-та
Трябва и хотел. Скъпо. Лондон. Голям град. AirBNB? Двойно по-евтино. Става.

11-ти април 2015
Пътуване. Вечеря. Баня. Вече е 10:30. Стягаме багаж. Wizz! Само по раница.

12-ти април 2015

4:00
Ставаме за полета в 6:50. Такси. Аерогара. Свалям всичко метално. Тренирано. 

5:00
Гейт. И там тълпа. Wizz!! Чакаме и се тъпчем на гейта. 

6:50
Качихме се. И места намерихме. Мъж на "business trip" гони седналите до него с магическото "16 евро".

7:10
Няма места за всички. Заклинанието вече не действа. Излитаме.

сутринта
Стюардесите си подвикват с помощта на уредбата. Целта е да няма заспали. Няма.

~7:00
Лутън. Зайци бягат до самолета. Три се гонят около светлинните уредби. Слизаме на летището. ПЕШ!!! И ХОДИМ до гейта!?! И до изхода. Търсим препоръчана от Ася линия 757 Green Line. С WiFi. Питаме. Намираме спирката.

7:30
Автобуса има врата от грешната страна. И се движи в насрещното. Като всички останали по магистралата.

7:50
Край пътя има коне. И крави. И дървени сковани спирки. И зелена трева.

8:20
Виктория. Гара. Ремонт. Като преди 5 години. Разлика? Повече сгради наоколо.

8:30
Вземаме закуска от Pret-a-Manger. Готина. Не е English Breakfast.

8:50
Бъкингамския. Не е много впечатляващ. Но има парк за закуската. Има патици и 3 катерици стръвници. Гледат гладно. Имаме ядки в закуската. Даваме им. Все пак са с чипове и кралска собственост. Катя заявява че тук е сниман Мисия Лондон. Има патици все пак.

баш сутринта
Смяната на караула е от следващия месец. Прецакани. Но пък има Shaun the Sheep. На поляната. Снимаме се. Още патици и парк. И фонтани.

9:30
Тълпа туристи. Смяна на караула? Лъжци. Конна стража. Нищо, става. Полицай на кон хока зри... туристите де.

към 10
Минаваме през подлез и излизаме на малко площадче. Полицаи с автомати. Мъж и жена. Мацката гледа страшно като колегата си. Нещо издрънчава на паветата. Пълнител на автомат. На мацката. Бавно го взема и бързо го тъпче в автомата. Колегата и гледа странно. Много странно.

преди обяд
Даунинг №10. Уестминстърко абатство. Jewel Tower. 3.50 тежки пари за вход. Нищо за разглеждане. Не трябва да се прецаквам. Меря памук маскиран като кафе с гумени тежести. Излизаме.

обяд
Големия Бен. Снимаме 2-3 пъти и продължаваме към Лондонското око. 21 тежки пари за кръгче. Вземаме билети. Гледаме рекламно 4D клипче.  С очила сме. На моите има нещо лепкаво. Пръска ни вода и мигат китайски коледни лампи. Бразилски баби зад нас. Кикотят се като бъдат оцикани с вода.

Колелото
С раниците сме. Пречат на опашката. Проверяват моята. Вътре има бельо и четка за зъби. Охраната ме пита от къде съм. България. Псувня на румънски. Пуска ме. Возим се. Бавно. Снимаме по 20 пъти на всяка посока. За да не сме прецакани. Слизаме. Търсим метро. Близо е. Ама не работи неделя.

Кулски мост
Пеш през пешеходен мост. Към метрото. Пак. До Tower bridge. Излизаме. Кули. Ама стъклени. И високи. Най-високи в Европа. И крепост. И кранове. Стигаме на моста. Има кула. После мост. И после по-голяма кула. И пак мост. Предлагат ни промоция. Харчиш 4 тежки пари в магазина и ти харизват 2 пари за вход. Отсвирваме ги. Гладни сме.

14:00 Пристан
До моста има готини улички. И пица. Ядем пица. Пия сицилианска лимонада. Плащаме 30 тежки пари.

15:00 половинка Кулски мост
Връщаме се. Да намерим апартамента. Настаняване от 15 до 16. Ама моста го вдигат. Има и ограда. Желязна. Като на дядо. Туристи. Снимат. И ние снимаме.

16:30
В апартамента. Не е зле. Има изглед към релси. Минават влакове. През 2 минути. В час пик и през 1.

17:00
Нямаме много багаж. Wizz!!! Отиваме за козметика. В гарата има Boots. Работи. Не като сутринта в 8. Купуваме ябълки и вода. Сблъскваме се със self-checkout. Не работят ако не оставиш покупките в торбичката. Псуваме.

18:00
Връщаме се. Изморени. 

20:00
Спим.

13-ти април 2015

9:30
Ставаме.

10:00
Закуска от Pret-a-Manger. Разходка за билети за Wicked. Театъра е близо. Но пред него спят бездомници. Щото е затворено. Решавам да покажа уличката с хотела от предишно посещение. От преди години. 5. Ще търсим и градинка за закуска.

10:30
Градинките са затворени. Ядем на пластмасова пейка. На спирка на автобус. Приближава дядо и ни предупреждава че в метрото е тотален хаос. Да не пътуваме с него. Не го слушаме и отиваме. Следващия влак е след 3 минути вместо след 1. По-следващия е след 5. Тръгваме към British Museum. На топло и безплатно.

11:00
В музея сме. Гледаме. Камъни. От Розета на 3 езика. Камъни от Египет. Каменни стени по 20 метра от Иран, Ирак, Персия и квото още е имало. Крадени с кораби. Има и камъни от други държави.

11:30
Мумии. На хора. На бебета. На малки бичета. Не като нашите от Краводер. Мумии в римски стил. Мумии в гръцки стил със стърчащи ц... гърди. Аве мумии.

12:00
За разнообразие отидохме в азиатската част. Разнообразно е. Самурайски мечове. Странни японски неща. Грънци от Корея и Китай. По пътя имаше и пропаганда от времето на Наполеоновите войни.


12:30
Писна ни. Търсим храна. Обядваме по един сандвич в музейното кафе. Оставяме 30 тежки пари. Пазаруваме в магазинчето на музея. Катапулти, мечове, детски книжки с египетски йероглифи и речник накрая.

14:00
Гледаме още. Камъни от Южна Америка. Ацтеки, маи и други ограбени. Ескимоси, индианци. Нефрит от Китай. Пак ни писна. Търсим изхода.


15:30
Излизаме. Трафалгар е близо. Отиваме. На него е набит на кол адмирал Нелсън. Стои отгоре и гледа лудницата на площада пред галерията. Йода във въздуха. Още един Йода. На земята. Танцуващ йндийско-британска чалга. Беличък магесник показва как след малко ща са фърли на бодлите. И са фърля. Продължаваме към кола на Нелсън. Няма място за сядане. Отиваме да се снимаме с Шон.

16:00
Я! Ма то парка на Бъкингамския е близо?! Пеш до парка. Сядаме в St.James на пейка. Гледат ни странно щото сме с по 2-3 фланели. Бритовете са по къси гащи, а някои и без тениски. От срам се разхвърлям. Ядем бисквити с маково семе.

16:30
Продължаваме към гарата Виктория. Сещаме се за билетите. Отиваме да си купим. Вземам гъзарски места за много тежки пари. Катя ме пита "Нямаше ли по-евтини?". Поглеждам сметката от 180 пари. Пак. Питам се същото. Оправдавам се. Миналия път съм гледал "Извратения" пак за толкова.

17:00
Долните ми израстъци дават фира. Плюски. Минаваме през гарата. Тъкмо. Купувам лепенки от Boots. Стигаме до апартамента. 

17:30
Душ. Обличане. Пачване на краката. Подготовка за концерта в Кралска Зала на Албърт.

18:30
Стигаме до станцията на тръбата. Излизаме и ходим бавно. Заради мен. Куцам. Подземно пешеходно тунелче. Изходи за музеи. И за музея с динозаврите. Излизаме. Чудим се къде е залата. Не се вижда. Продължаваме напред. След нас се мъкнат тълпи. Странни залюхани индивиди. Тъмно облекло. Ясно. Уцелили сме посоката. След нас си говорят . "Да следваме тия отпред. Сигурно знаят къде е залата". А дано ама надали.

19:00
Влизаме в залата. Качваме се до стаичетата на 2-рия етаж. Ложата ни е заключена. Отключват я и влитаме. Има 4 места. Стаиче. Предупреждават  да не затваряме. Ако излизаме.  Заключвала се сама. Чакаме. Началото е обявено за 19:30

19:45
Чакаме. Началото. Празно. Публиката щъка. Някъде.

20:00
Начало. Напълни се. Скучно ми е. Песните и групата са добри. Очаквам повече обаче. Кукли на Ziltoid. Изстрелвани с пневматични оръдия. Забавно.

Х часа
Антракт 25 минути. Според Девин - 25 мин време за тоалетна. "Good luck". На екраните волна програма. Зверски забавна. Хипопотам с ако. Badger Badger и Gummy Bear. С коментар на Ziltoid.

Х:25
Втора част. Волна програма. Песни гласувани във Фейса. Различно. Не съм обръщал внимание. Поне на половината. Харесаха ми всички.

23:00
Апартамент.


23:30
Спим.


14-ти април 2015

08:15
Ставаме.

09:00
Манджа от Pret-a-Manger. Пътуваме към Кулски мост. Ядем в градинката до метрото.


09:30
Мъкнем се. Щото куцукам. Стигаме до касите на Tower of London. 25 тежки пари за вход. На Катя и се струват много. Не влизаме. Ходим до моста. Там влизаме. Снимаме се на прозрачния под. Гледаме снимки и 4 минутни филмчета. Два броя.

10:00
Излизаме. Отиваме да видим парните машини.  Част са от моста. Виждаме ги.

10:30
Запътваме се към The Monument. Бил по случай пожара 1600 и някоя. Заобикаляме поне 3 строежа. Стигаме. Дирек със стълби вътре. Не ми се качва. Бойкотирам. Катя заплашва с катедралата в Барселона.

11:30
Достигаме Св.Павел. Влизаме. Искат пари. Даваме. Вземаме аудио гайд iPod. Слушаме. Зяпаме. Малко постно. Не е като при нас. Претупали украсите щото бързали. Да не похарчат много пари. Украсено е само към олтара. Проповед на всеки час. За 5 мин. Hallowed be thy name. Чаках Bruce. Dickinson.

13:00
Запътваме се към купола. Стотици стълби. 100 и нещо всъщност. Галерията на шепота. Родители шепнат на двете си момчета. Чува се от другия край. Около 50-60 метра. Песнопение на всеки половин час. Гледаме хористчетата отгоре. Продължаваме към външния купол. След като се позачудвам.

13:45
Вие ми се свят от стълбите. Стигаме горна площадка. Снимаме. Катя пак заплашва с катедрала. В Барселона.


14:00
Качвам се по вити стълби. С площадка на всеки 20. Стигаме най-отгоре. Няма място от тълпа тийн немчуги. Навикват ги да си ходят. Тръгват. Само 3-ма обаче.

14:35
Измъкваме се и слизаме.

15:00
Подземия. Крипта. Ама не е creepy. Паметници на велики бритове. Ресторант. Магазин. Тоалетна. Влизам. Мисля си че в момента им п... на катедралата. Вярно е. Излизам. Вече съм го правил на свещена земя. В криптата дори. Сещам се. На ден поне 500 човека я вършат тая работа.

15:40
Излизаме. Снимам Катя до Шон. Продължаваме по Мильениьум моста до другия бряг. Към Шекспир театър. Заглеждаме се в музея за модерно. Изкуство. Няма време.

16:30
Свиваме към Шекспировия театър. Работи до 17:00. Отсвирваме го. Заседяваме се малко край реката.

17:00
Търсим метро на южния бряг. Намираме го. Работи.

18:30
Купуваме вода и 4 ябълки. Има оригинален британски кепаБ.

19:00
Тръгваме за мюзикъла "Извратен".

19:30
Почва. Мадамите дето щъкат по сцената са същите. Главните героини също. Магьосника и той. Само принца май е друг. Не съм сигурен. Него не го заглеждах много.

22:30
Спим.


15-ти април 2015

09:00
Ставаме. Изхвърляме четки, чехли, пасти, дезодоранти. Ръчен багаж. Wizz.
 
09:30
Стегнахме багажа. Заговаряме се със собственичката. Product Owner & Scrum master. Родена в San Francisco. Преместила се в Париж. После Лондон. Оставихме и багажа до вечерта. Целта постигната. Питам за магазин за играчки. Издаде.

10:20
На пазар. Oxford street

11:00
Няма играчки.

12:00
На ъгъла на Хайд парк сме. Влизаме и виждаме колелета. 2 лири наем, 30 минути безплатно и по 2 лири на полвин час. Има вело алеи за разходка. Чудесно. Вземаме по едно. Нали съм disabled.

12:30
Караме. По улиците край парка. Измама. Алеята свършва в нищото и миля по-натам се появява от нищото. Голяма измама. И карат от грешната страна. Щяха да ни сгазят. Поне 4 пъти.

13:20
Слизаме и отиваме към метрото. По пътя минаваме покрай посолствата на всички арабели. Има и готини. Мацки. Почти не са забулени. Търсим споменатия от хазяйката Hamleys. Слизаме на кръгчено на Пикадили. Озъртаме се. Търсим в Гугъл. Приклещени. До парапета на подлеза.

13:40
Продължаваме да се озъртаме. Гугълската карта на телефона още твърди че е през 6 квартала в 7-ми. Не вярвам на програмисти. Професионален навик.

14:00
Намираме го. 5 етажа. Китайски играчки.

15:00
Излизаме. Има още време. Отиваме на слънце. В Green park. Разхвърляни бритове се въргалят по тревата. Вземаме сладолед. Въргаляме се и ние. Бритки се събличат. Демонстративно. По бельо. Правят лицеви. С вирнато дупе.

16:00
Прибираме се пеш. През двореца. Там като маймуни в клетка маршируват гвардейци. Други маймуни ги снимат.


16:40
Куцукам към апартамента.

17:00
Апартамент. Сбогуване с хазяйка. Не била посетила само Прага и Будапеща. Мятаме раниците и потегляме.

17:10
Търсим спирка на автобуса. Купувам си още една тениска Mind The Gap. Намалена на 9 тежки пари.


17:30
Шофьора е от нашите. Балкански субект. НЕвежлив. НЕприветлив.

17:50
Шофьора е от нашите. Плюе през прозореца. Трие се във волана. Кокори се като види поразголена британка. Зяпа като е без бельо. С отворена уста. Слуша класическа музика.

19:10 
Чакаме на тайна спирка. Пристигнали сме по-рано от разписанието.

19:30
На летището сме.

20:00
Полета има 50 минути закъснение. Wizz!!!

20:30
Ядем за последно в Pret-a-Manger. Обявяват гейта. Тичаме с останалите като хрътки. Wizz!!!!

20:40
На гейта сме. Паспортна проверка от английска кака. Получавам английска отметка. В зелено-жълто. На билета.

21:10
Чакаме самолета да дойде до гейта.

21:25
Чакаме пътниците да слязат от самолета. Wizz!!!!!

21:40
Вътре сме. Чакаме да заредят с гориво. Wizz!!!!!!

21:50
Летим. Стюард. "Ако закупите две бири ...". Получаваме кебапче?

03:40
София. Такси. 120 км/ч по околовръстното.

04:00
Вкъщи сме.


Tuesday, February 24, 2015

Free static web hosting with GitHub

Intuitive

My old hosting provider (GoDaddy) had a cheap, intuitive and powerful Website Builder interface I used to set-up a nice looking 4 page web site for a friend.

With this interface he managed to add content without asking a single question, although he has none of the technical skills usually involved with such task.

Actually the interface is still intuitive and quite powerful, but after the first year it is no longer cheap.

Cheap

So I tried to find a replacement. I first tried some local web hosting companies, but the problem was that I had to configure my web server.

Then I took a look at Google Sites. The site offered free web-based editor. I was able to build a site for half an hour. Most of this time I spent trying to tweak the ugly templates.

After I gave up I decided to change the default host name with the domain I already had with GoDaddy. This took another 30 minutes, and neither CNAME, nor TXT validation actually worked. I guess I was quite impatient.

Free

In the end I realized that I actually need a single page with 4 things on it and I can simply use a single HTML page for that. And probably a free hosting with several MB still exists out there.

Not quite true according to my google search for "static page hosting". Seems nobody really wanted to provide such static HTML hosting any more.

Then I remembered a talk I had with my colleague. We were wondering if we can blog directly on GitHub instead of using special blog sites (like this one). I decided to give it a try and came across this blog.

It described perfectly the pain I feel from the existing hosting solutions, plus 2 methods to host static web sites in Dropbox and GitHub.

GitHub

Since I'm a developer I decided to try the GitHub way and came across this nice help guide on their site.

After 2 attempts I ended with a web site consisting of a single index.html and CNAME file describing the domain mapping I want to use.

Changing the DNS record in GoDaddy was taken in effect almost instantly (as with Google Sites by the way), and after 10 minutes I had a working site.

Picture Gallery

As a bonus I found out I can use Flickrit.com to embed a nice looking gallery, instead of the monstrous widgets in Website Builder and InstantPage (both from GoDaddy) or the unsuccessful attempts to add a widget or iframe in Google sites.

Tuesday, August 05, 2014

Cloud Foundry on VirtualBox

There are a lot of ways to build and try Cloud Foundry, but the easiest (and most cost-effective) I found so far is to use the Nise Installer.

The installation process:
  1. Install VirtualBox 
  2. Download Ubuntu Server 10.04 LTS 64 bit
  3. Create a VM with at least 10GB disk and 4GB memory
  4. Leave the first network adapter NAT-ed (for internet access)
  5. Make a second adapter that is Host-only (for host OS access)
  6. Install Ubuntu Server
  7. Install curl
  8. Launch the bootstrap.sh script (as documented on the Nise Installer page)
  9. Restart the VM to get the new kernel in place 
If you are lazy go get the already created VM image from my Google Drive. 


To start the Cloud Foundry instance:
  1. Go to cf_nise_installer directory
  2. Launch CF with ./scripts/start.sh 
You may need to relaunch the script or stop/start again in case some of the components failed.


To access the Cloud Foundry instance:
  1. Get the IP of the VirtualBox Host-Only Ethernet Adapter with ipconfig /all or ifconfig -a
  2. Add a route from 10.0.2.15 to the IP of the VirtualBox Host-Only Ethernet Adapter. 

    For example in Windows that would be:  
    route add 10.0.2.15 192.168.56.101  

    , where 192.168.56.101 is the IP of the Host-Only adapter.

  3. Install CF CLI on your client machine
  4. Login to the CF instance using the login command provided at the end of the start via
    the ./scripts/start.sh script

To create organization and space you can use:
cf create-org me
cf target -o me
cf create-space development
cf target -s development

You are ready to push an app and have fun.

Thursday, February 06, 2014

SAP HANA Cloud: OpenSocial widgets auto-discovery and operation

Recently we added functionality that enables deployment of OpenSocial widgets and their auto-discovery in SAP HANA Cloud Portal. 

As Wikipedia states:
OpenSocial is a public specification that defines a component hosting environment (container) and a set of common application programming interfaces (APIs) for web-based applications. Initially it was designed for social network applications
You can check the developer guide for OpenSocial widgets in the Portal for more information how to create such widget. 

There is also a short topic on how to package the widget which notes that your spec.xml needs to be:
  • publicly accessible resource
  • named so that it ends with the .spec.xml suffix
  • with name, description and thumbnail that will be shown in Portal Content Catalog

Deploying & running your widget as SAP HANA Cloud application allows you to use the Portal auto-discovery. This means that when your application is started successfully on the HANA Cloud, it will be visible in the Portal Content Catalog, so you can build a site with such widgets.

Soon you should also be able to deploy Cloud Portal sites with the widgets layout you created. Of course we will also be able to do auto-discovery for them as well.

The widgets has to be running and accessible no matter if hosted or not in SAP HANA Cloud. This is needed so the Portal can fetch the spec.xml from the publicly accessible URL of the widget application.

Since widgets and sites are relatively small, they will make small application packages (WAR files). To run several widgets you may need several compute units and you may need to pay for all of them.

However there is a way to combine several small WAR files and run them on a single compute unit as a single application. 

Just copy all WAR files in one directory and use the Command Line deploy command to deploy the whole directory. As the documentation of deploy command states you can use the --source parameter to provide:
a comma-separated list of file locations, pointing to WAR files, or folders containing them
The result will be a single application from SAP HANA Cloud point of view (lifecycle, monitoring, billing), having multiple WAR files running inside.
Please have in mind that all these applications (no matter if widgets or plain Java apps) are running on  the same compute unit and they share the memory, CPU and storage resources of the unit.  

So if you have resource hungry applications, perhaps it is not very wise to save money by increasing the response time (or latency) of your customers.

You can however use this multiple-wars-in-a-single-application approach for development or testing environments, modelled for staged development

So use this for testing, but beware the performance impact for productive scenarios.

Thursday, December 05, 2013

Unbricking DD/OpenWRT routers

The recent news about a new Linux worm that attacks routers made me download and flash the latest version of dd-wrt with the hope that it will have newer versions of the binaries and thus ensure better protection.

Unfortunately after update and following restart the router was rendered useless. Obviously the downloaded firmware was damaged. I had a brick, while only a moment ago this was my home router - the ageing Linksys WRT160NL.

I had to search some sites on my mobile only to find out that in order to unbrick it I may:
  • do factory reset
  • use JTAG and serial cable (or on new machines USB-to-serial cable)
The factory reset did not work. Although the router happily flashed its LAN, WAN and power lights it did not establish connection with my Windows 7 machine, nor had its wireless SSID broadcast. 

So I started investigating the other alternative - uploading new firmware via the serial communication header in the router. The sites mentioned TFTP and then it hit me. I managed to flash Buffalo router a while ago, just by using the built-in boot-loader and TFTP PUT request. It should be possible to do the same since the router seemed to have its lights functioning and therefore at least part of the boot-loader working.

I asked Google and found out in OpenWRT wiki that this should be fairly easy to do. The wiki commanded:
1. Turn off the power to the router and leave it off until the final step.
2. Make sure your computer has a static IP address from 192.168.1.x (eg. 192.168.1.4)
3. Make sure the ethernet cable is plugged into one of router's LAN ports and the other end into computer's ethernet port
3. cd to the folder where you have the image
4. change the name of the new firmware to code.bin , then type :
5. echo -e "binary\nrexmt 1\ntimeout 60\ntrace\nput code.bin\n" | tftp 192.168.1.1
6. plug the power into the router, it should flash.
Well needless to say this didn't worked - I was on Windows. I had the Microsoft TFTP client, that established connection instantly and never looked back to retry. 

Fortunately I had Cygwin installed as well. So I just had to download and install the tftp package. Without router and therefore an internet connection.

I've found the OpenWRT wiki on my iPad using internet via WiFi tethering. So I enabled the USB tethering this time, and used it to update Cygwin and add proper TFTP client to my Windows system. I also downloaded older version of the firmware.

It took me a matter of minutes to try the steps above and to restore my router's firmware.

I even flashed the (hopefully) latest and greatest version of the dd-wrt firmware for 160NL.
Re-downloaded of course.

Thursday, October 31, 2013

SAP HANA Cloud: Application properties. Multiple connections

The latest update of SAP HANA Cloud Platform (we've changed the name again) includes two small but important changes. Copied from the release notes:
  • Deployment with multiple connections:
"You can use the --connections parameter in the deploy command  to specify the number of connections to be used during deployment. Use the parameter to speed up the deployment of application archives bigger than 5 MB in slow networks."
  • Application properties listing
"You can now list the properties of a deployed application using the new command [...] display-application-properties."
Multiple connections

I already provided measurements on the impact of using more than one connection in slow or traffic/connection shaped networks in one of my previous blogs. You can now try this for yourself by using the --connections parameter during deployment.

For number of connections you can use:
  • --connections 1 means you want to disable the feature
  • maximum number of connections --connections 5

Although some networks allow higher number of connections than 5, this rarely pays off, unless you are the only person left in the office on Friday evening with the sole purpose to utilize the whole bandwidth of the company's leased internet line.

Splitting an archive in small chunks has performance penalty of 5-10% over simply transferring it via the line. We wanted to guarantee the split was really needed so we added the 5 MiB entry barrier for the new feature.

To determine the right number of network connections you can:
  1. Start  with the default settings
  2. Increase the number from 2 up to 5 looking at the times for deployment:
    [Thu Oct 31 10:22:53 FET 2013] Deployment started....
    [Thu Oct 31 10:22:58 FET 2013] Deployment finished successfully 
  3. Use the number of connections that provided the fastest deploy time
Application properties listing

This new feature is small, but quite important. Without this neat feature the operators and developers had to write down what they actually used as deploy parameters. There was no way to obtain the settings from the cloud.

Now we finally provided a way to get this info and be able to blame either yourself or a colleague for using a certain setting:

C:\sdk-1.39.13.6\tools>neo display-application-properties samples\deploy_war\trial.properties

SAP HANA Cloud Console Client

Requesting application properties for:
   application: test
   account    : i024099trial
   SDK version: 1.39.13.6
   user       : i024099

Password for your user:
[Thu Oct 31 10:35:24 FET 2013] Requesting application properties...
[Thu Oct 31 10:35:25 FET 2013] Request for application properties finished successfully

   runtime-version   : 1
   minimum-processes : 1
   maximum-processes : 1
   java-version      : 6

Google+ Followers