[

пятница, 7 августа 2015 г.

Перевод guest instance в Ganeti на PvGrub загрузку

За основу взят пост http://blag.welterde.de/posts/2014/06/29-ganeti-pvgrub.html

Имеем ganeti cluster 2.11 (ubuntu 14.04), xen-pvm, debian 7 guest

Внутри гостя выполняем действия из хука (установка grub, 40_custom, ядра).

Ставим pvgrub, например, http://celttechie.github.io/installing-configuring-pv-grub.html (требует обработки напильником).

NB: не забываем сделать gnt-cluster copyfile для pv-grub файлов.
Далее правим параметры instance:
$ gnt-instance modify -H kernel_args='(hd0\,0)/boot/grub/menu.lst' instance_name
$ gnt-instance modify -H kernel_path='/usr/lib/xen/boot/pv-grub-x86_64.gz' instance_name
$ gnt-instance modify -H initrd_path='' instance_name
$ gnt-instance modify -H bootloader_path='' instance_name
$ gnt-instance modify -H bootloader_args='' instance_name
$ gnt-instance modify -H root_path='' instance_name

Ребут инстанса через gnt-instance reboot.

понедельник, 11 августа 2014 г.

Инициализация Ganeti кластера на Ubuntu 14.04 и Xen 4.4

Все по мануалу http://docs.ganeti.org/ganeti/2.11/html/install.html.

Кластер инициализировал так:

gnt-cluster init --enabled-hypervisors=xen-hvm,xen-pvm --nic-parameters link=xenbr0 --master-netdev xenbr0 cluster.host.name

пятница, 1 августа 2014 г.

GORM strangeness

Grails version 2.3.8


Вот такая конструкция не работает

runners = Runner.methodReturningDetachedCriteria(params).findAll {
    lastName =~ "%${lastName}%"
}

Такая тоже

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).findAll(filter)

А такая вполне себе работает

def filter = {
    lastName =~ "%${lastName}%"
} as DetachedCriteria<Runner>
runners = Runner.methodReturningDetachedCriteria(params).where(filter).findAll()

четверг, 15 мая 2014 г.

Hibernate Exceptions In Grails Domain Event


По неосторожности можно наткнуться на

ERROR hibernate.AssertionFailure  - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) Message: null id in Domain entry (don't flush the Session after an exception occurs)

пытаясь изменить свойства домена, например, в событии beforeInsert.

Простой пример:
def beforeInsert() {
    someField = fieldModificationService.modify(someField)
}

Если Hibernate сам управляет сохранением данных в базе, а по умолчанию это так, то тут может произойти flush, что в контексте события домена запрещено.

Чтобы этого не происходило можно обернуть сервис в @Transactional(readOnly = true):
@Transactional(readOnly = true)
class FieldModificationService {
    def grailsApplication
    ...
}

воскресенье, 27 апреля 2014 г.

Not In Groovy

5ти минутный ступор: в Groovy есть оператор in, но не not in... Python портит людей.

понедельник, 9 сентября 2013 г.

Как вызвать интерактивную консоль python из кода

bpdb

import bpdb; bpdb.set_trace()

На экране появится приглашение bpdb
Django version 1.5.2, using settings 'my_project.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
> /path/to/my_project/app/views.py(224)visit_update()
-> return HttpResponse(json.dumps("TODO:"), content_type="application/json")
Use "B" to enter bpython, Ctrl-d to exit it.
(BPdb)

NB: bpython не работает, но по идее это должно быть так:
import bpython; bpython.embed()

IPython

import IPython; IPython.embed()

Python code (last resort)

import code; code.InteractiveConsole(locals = locals()).interact()