Subj
вторник, 5 апреля 2016 г.
пятница, 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 reboot.
Имеем 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
Кластер инициализировал так:
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()
Вот такая конструкция не работает
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 г.
понедельник, 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()
Подписаться на:
Сообщения (Atom)