My mission is to bring Nix ecosystem to everyone:
domenkozar / almir Goto Github PK
View Code? Open in Web Editor NEWBacula web administration written in Pyramid
License: Other
Bacula web administration written in Pyramid
License: Other
My mission is to bring Nix ecosystem to everyone:
Sometimes bacula-director will not respond at all. Process is running, but bconsole will never timeout. Result is that Popen call never ends, which looks like almir does not start correctly.
Seems like Popen got a timeout parameter in Python 3.3
Install script does not run on Python 3.2. Please consider Python 3.2 support.
Thanks.
Hello,
We require TLS in bacula, also for the bconsole client. It seems that there is no support for TLS, it would be nice if that can be implemented.
Regards,
Matthijs Möhlmann
This is the log when I client the Dashboard now.
2012-04-06 15:46:59,045 ERROR [exc_logger][Dummy-1] http://almir.revpol.com:8000/
Traceback (most recent call last):
File "/opt/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/init.py", line 40, in exclog_tween
return handler(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/opt/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/init.py", line 287, in call
return self.template.render(system)
File "/opt/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/opt/almir/almir/templates/dashboard.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/opt/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/opt/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/opt/almir/almir/templates/dashboard.jinja2", line 13, in block "content"
{{ macros.jobs_table(request, jobs) }}
File "/opt/almir/almir/templates/macros.jinja2", line 67, in template
{{ link(job.render_type(request)) }}
File "/opt/almir/almir/models.py", line 249, in render_type
return {'text': TYPES[self.type]}
KeyError: 'C'
2012-04-06 15:46:59,048 ERROR [waitress][Dummy-1] Exception when serving /
Traceback (most recent call last):
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 329, in service
task.service()
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 173, in service
self.execute()
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 380, in execute
app_iter = self.channel.server.application(env, start_response)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 187, in call
response = self.handle_request(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/tweens.py", line 20, in excview_tween
response = handler(request)
File "/opt/almir/eggs/pyramid_tm-0.3-py2.7.egg/pyramid_tm/init.py", line 61, in tm_tween
response = handler(request)
File "/opt/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/init.py", line 40, in exclog_tween
return handler(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/opt/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/init.py", line 287, in call
return self.template.render(system)
File "/opt/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/opt/almir/almir/templates/dashboard.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/opt/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/opt/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/opt/almir/almir/templates/dashboard.jinja2", line 13, in block "content"
{{ macros.jobs_table(request, jobs) }}
File "/opt/almir/almir/templates/macros.jinja2", line 67, in template
{{ link(job.render_type(request)) }}
File "/opt/almir/almir/models.py", line 249, in render_type
return {'text': TYPES[self.type]}
KeyError: 'C'
2012-04-06 15:47:00,151 ERROR [exc_logger][Dummy-2] http://127.0.0.1:2500/
Traceback (most recent call last):
File "/opt/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/init.py", line 40, in exclog_tween
return handler(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/opt/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/init.py", line 287, in call
return self.template.render(system)
File "/opt/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/opt/almir/almir/templates/dashboard.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/opt/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/opt/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/opt/almir/almir/templates/dashboard.jinja2", line 13, in block "content"
{{ macros.jobs_table(request, jobs) }}
File "/opt/almir/almir/templates/macros.jinja2", line 67, in template
{{ link(job.render_type(request)) }}
File "/opt/almir/almir/models.py", line 249, in render_type
return {'text': TYPES[self.type]}
KeyError: 'C'
2012-04-06 15:47:00,154 ERROR [waitress][Dummy-2] Exception when serving /
Traceback (most recent call last):
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 329, in service
task.service()
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 173, in service
self.execute()
File "/opt/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 380, in execute
app_iter = self.channel.server.application(env, start_response)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 187, in call
response = self.handle_request(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/tweens.py", line 20, in excview_tween
response = handler(request)
File "/opt/almir/eggs/pyramid_tm-0.3-py2.7.egg/pyramid_tm/init.py", line 61, in tm_tween
response = handler(request)
File "/opt/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/init.py", line 40, in exclog_tween
return handler(request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/opt/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/opt/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/init.py", line 287, in call
return self.template.render(system)
File "/opt/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/opt/almir/almir/templates/dashboard.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/opt/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/opt/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/opt/almir/almir/templates/dashboard.jinja2", line 13, in block "content"
{{ macros.jobs_table(request, jobs) }}
File "/opt/almir/almir/templates/macros.jinja2", line 67, in template
{{ link(job.render_type(request)) }}
File "/opt/almir/almir/models.py", line 249, in render_type
return {'text': TYPES[self.type]}
KeyError: 'C'
I think that the display of Start times, End times, and Durations in lists (larger right side of screen) would be better if they were simple time stamps. While they look nice currently, they would be smaller, allowing for additional columns possibly.
Also, the size column on my 24" screen shows:
13.5
GB
14.2
GB
So they are wrapping due to lack of horizontal space
Just a thought.
Thanks!
Bill Arlofski
Since main column is fluid, if we want to improve UX with optional sidebar, move it to the right side. Hard part it to rewrite console tooltips positions.
Review what's new.
Change following:
When almir will support configuration, parse bacula documentation from latex manuals and display that as help text on inputs.
Would be nice if bacula-director could query for free available space on each storage daemon. Something like:
.status storage freespace
When trying to access http://host:2500/job/59/ (and other jobs, many, but not all)
Internal Server Error
The server encountered an unexpected internal server error
(generated by waitress)
System: Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
Bacula: 5.2.5-0ubuntu6
Almir: latest on 2012-04-14
almir-stderr---supervisor.log
2012-07-16 12:07:29,738 ERROR [exc_logger][Dummy-1] http://host:2500/job/59/
Traceback (most recent call last):
File "/usr/share/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/__init__.py", line 40, in exclog_tween
return handler(request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/usr/share/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/__init__.py", line 287, in __call__
return self.template.render(system)
File "/usr/share/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/share/almir/almir/templates/job_detail.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/usr/share/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/usr/share/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/usr/share/almir/almir/templates/job_detail.jinja2", line 10, in block "content"
{{ macros.logs_table(request, object.logs, show_jobid=False) }}
File "/usr/share/almir/almir/templates/macros.jinja2", line 128, in template
{{ td_link(log.render_logtext(request)) }}
File "/usr/share/almir/almir/models.py", line 586, in render_logtext
d['text'] = Markup(nl2br(log))
File "/usr/share/almir/eggs/MarkupSafe-0.15-py2.7.egg/markupsafe/__init__.py", line 71, in __new__
return unicode.__new__(cls, base)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 35: ordinal not in range(128)
2012-07-16 12:07:29,741 ERROR [waitress][Dummy-1] Exception when serving /job/59/
Traceback (most recent call last):
File "/usr/share/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/channel.py", line 329, in service
task.service()
File "/usr/share/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 173, in service
self.execute()
File "/usr/share/almir/eggs/waitress-0.8.1-py2.7.egg/waitress/task.py", line 380, in execute
app_iter = self.channel.server.application(env, start_response)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 187, in __call__
response = self.handle_request(request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/tweens.py", line 20, in excview_tween
response = handler(request)
File "/usr/share/almir/eggs/pyramid_tm-0.3-py2.7.egg/pyramid_tm/__init__.py", line 61, in tm_tween
response = handler(request)
File "/usr/share/almir/eggs/pyramid_exclog-0.5-py2.7.egg/pyramid_exclog/__init__.py", line 40, in exclog_tween
return handler(request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/usr/share/almir/eggs/pyramid-1.3-py2.7.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/usr/share/almir/eggs/pyramid_jinja2-1.3-py2.7.egg/pyramid_jinja2/__init__.py", line 287, in __call__
return self.template.render(system)
File "/usr/share/almir/eggs/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/share/almir/almir/templates/job_detail.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/usr/share/almir/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/usr/share/almir/almir/templates/base.jinja2", line 84, in block "container"
{% block content %}
File "/usr/share/almir/almir/templates/job_detail.jinja2", line 10, in block "content"
{{ macros.logs_table(request, object.logs, show_jobid=False) }}
File "/usr/share/almir/almir/templates/macros.jinja2", line 128, in template
{{ td_link(log.render_logtext(request)) }}
File "/usr/share/almir/almir/models.py", line 586, in render_logtext
d['text'] = Markup(nl2br(log))
File "/usr/share/almir/eggs/MarkupSafe-0.15-py2.7.egg/markupsafe/__init__.py", line 71, in __new__
return unicode.__new__(cls, base)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 35: ordinal not in range(128)
Support multi user access to almir.
We need a system that will allow us following modularity:
This can be solved with users/permissons/roles/groups.
Generate reports based on metadata found from bacula-director. Graph what can be visualized.
This is needed in few places. Most important one is restore command.
Look into jQuery plugins such as dynatree.
Logs will include: "another program is already listening"
Current solution is to do "pkill bconsole" and then "bin/supervisorctl restart all"
In future, this has to be fixed
Using Chromium on Linux the Copy, Excel, PDF, Print menu buttons have some image remnants overlaying them on the Clients, Jobs, Pools and Storages screens.
I would attach an image but there does not appear to be an option here.
Bill Arlofski
Currently main.js is completely untested.
Almost all of our clients run more than 10 jobs per night. The last five finished jobs on the Dashboard might be better if it was configurable, OR if that was Jobs run in the last 24 hours, or similar.
Also, Baybe place Running Jobs Before Upcoming or finished jobs because that is (IMHO) more important to see and currently with 15 upcoming jobs, Running jobs is below the bottom of the screen and you need to scroll to get to it.
Thanks!
Bill Arlofski
This is really a nice tools, keep up the good work.
BTW, I guess it would not be too difficult to add a summary on the statistics (front page) containing summary about 7 days or even last month summary on total job for each level and the count of completion status (success, success with warning or even failed) of them. But this could be very useful to administrator so that they know if there is anything urgent waiting for their attention.
For I am sure administrator will be happy with the error columns can be shown in somewhat emphasized style like bold or in different colors. It would also be good to have a top errors for finished jobs and latest 1/few errors for current running jobs so that administrator can gets an heads up on what is going on.
To better manage CSS/Javascript resources, use Fanstatic.
Would be good to have Jobid and Jobname while viewing the list of Client jobs on a client page.
Also on the Job Details page Jobid and Job Name are missing
Looks really good so far and is very FAST!
Bill Arlofski
For what I see the system is not i18n aware. Please provide support of .po files (gettext) and I'll promptly translate it into Italian (let me access the git report and I'll update directly...)
bye
The Pools on the Pools page are not links and therefore there is no way to quickly see interesting information such as "Label Format", "Max Volume Bytes", "Recycle", "Volume Retention" etc for each pool
Bill Arlofski
Currently with travis-ci we run tests for each datatabase. Would be nice to have support to run all tests with single command.
The issue is we need to repopulate metadata with each database. Look into metadata.clear()
Look into pygments lexers
For each client, in the Details box top left corner always shows 0 B for total size of backups.
Bill Arlofski
Hello,
For information, the demo site is unreachable.
wget http://almir-demo.domenkozar.com/
--2013-02-20 22:59:44-- http://almir-demo.domenkozar.com/
Résolution de almir-demo.domenkozar.com... 173.0.58.34
Connexion vers almir-demo.domenkozar.com|173.0.58.34|:80...connecté.
requête HTTP transmise, en attente de la réponse...502 Bad Gateway
2013-02-20 22:59:44 ERREUR 502: Bad Gateway
Main goal of almir is to become complete interface to bacula. The hardest part will be to map web configuration to config files.
Currently our best bet is to use pyparsing.
To provide more information for new users, it might be a good idea to display landing page with elaborate wall of text.
For example, typing status
in console and then a number returns nothing (as it is send to stderr)
An Admin type job does not have a level (Full, incremental, Differential)
In several locations where Jobs are listed (Dashboard and Jobs list on Jobs page) lots of "=" characters are used for the "Level" column which causes the column to be very wide and the page to be too big to fit on screen.
This causes web browser side-scroller to be displayed, and you need to scroll right to see the Priority, Scheduled, and Volume columns.
This is true on both the on the Jobs page and the Dashboard page - maybe others. Not sure yet.
Fix: Jobs of type Admin should have "None" or "N/A" or "Admin" for the Level
Additionally, Admin Jobs also show Volume of "Incremental" which makes no sense and I believe this, and the many "=" characters are probably just a a parsing issue since there is no actual Level for Admin jobs.
Bill Arlofski
Hi,
I get sometimes the error printed below. This is happening when I click on a client. This only
happens when there are no Jobs for that client.
2012-05-07 13:25:54,252 ERROR [waitress][Dummy-4] Exception when serving /client/26/
Traceback (most recent call last):
File "/srv/www/bacula/eggs/waitress-0.8.1-py2.6.egg/waitress/channel.py", line 329, in service
task.service()
File "/srv/www/bacula/eggs/waitress-0.8.1-py2.6.egg/waitress/task.py", line 173, in service
self.execute()
File "/srv/www/bacula/eggs/waitress-0.8.1-py2.6.egg/waitress/task.py", line 380, in execute
app_iter = self.channel.server.application(env, start_response)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/router.py", line 187, in call
response = self.handle_request(request)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/tweens.py", line 20, in excview_tween
response = handler(request)
File "/srv/www/bacula/eggs/pyramid_tm-0.3-py2.6.egg/pyramid_tm/init.py", line 61, in tm_tween
response = handler(request)
File "/srv/www/bacula/eggs/pyramid_exclog-0.5-py2.6.egg/pyramid_exclog/init.py", line 40, in exclog_tween
return handler(request)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/router.py", line 164, in handle_request
response = view_callable(context, request)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/config/views.py", line 352, in rendered_view
context)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/renderers.py", line 396, in render_view
return self.render_to_response(response, system, request=request)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/renderers.py", line 426, in render_to_response
result = self.render(value, system_values, request=request)
File "/srv/www/bacula/eggs/pyramid-1.3-py2.6.egg/pyramid/renderers.py", line 422, in render
result = renderer(value, system_values)
File "/srv/www/bacula/eggs/pyramid_jinja2-1.3-py2.6.egg/pyramid_jinja2/init.py", line 287, in call
return self.template.render(system)
File "/srv/www/bacula/eggs/Jinja2-2.6-py2.6.egg/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/srv/www/bacula/almir/templates/client_detail.jinja2", line 1, in top-level template code
{% extends "templates/base.jinja2" %}
File "/srv/www/bacula/almir/templates/base.jinja2", line 73, in top-level template code
{% block container %}
File "/srv/www/bacula/almir/templates/base.jinja2", line 76, in block "container"
{% block sidebar %}
File "/srv/www/bacula/almir/templates/client_detail.jinja2", line 24, in block "sidebar"
{{ macros.link(last_successful_job[0].render_starttime(request)) }}
UndefinedError: 'None' has no attribute 'render_starttime'
Regards,
Matthijs Möhlmann
my distribution has "traceback" python module in python-modules package
so perhaps worth to check it's existence in bootstrap?
also, maybe worth to fallback to curl, if wget is not present?
15:49:47 root[load: 0.41]@pld ~/almir# sh -xec "$(wget -O - https://raw.github.com/iElectric/almir/master/install_production.sh)"
--2013-01-27 15:49:49-- https://raw.github.com/iElectric/almir/master/install_production.sh
Resolving raw.github.com (raw.github.com)... 199.27.76.193
Connecting to raw.github.com (raw.github.com)|199.27.76.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 819 [text/plain]
Saving to: 'STDOUT'
100%[============================================================================================================>] 819 --.-K/s in 0s
2013-01-27 15:49:49 (21.9 MB/s) - written to stdout [819/819]
+ set +xe
+ [ -z /usr/bin/python2.7 ]
+ git clone https://github.com/iElectric/almir.git -b latests .
Cloning into '.'...
remote: Counting objects: 1879, done.
remote: Compressing objects: 100% (782/782), done.
remote: Total 1879 (delta 1317), reused 1644 (delta 1082)
Receiving objects: 100% (1879/1879), 534.47 KiB | 248 KiB/s, done.
Resolving deltas: 100% (1317/1317), done.
+ printf [buildout]\nextends = buildout.d/production.cfg
+ >buildout.cfg
+ /usr/bin/python2.7 bootstrap.py
Traceback (most recent call last):
File "/usr/share/python2.7/site.py", line 64, in <module>
ImportError: No module named traceback
15:49:53 root[load: 0.46]@pld ~/almir#
Almir process stops working. The web browser tells me it can't connect to server... supervisorctl shows almir process is in FATAL state:
serverlinux:/var/www/almir# python bin/supervisorctl
HttpOk RUNNING pid 6073, uptime 27 days, 18:31:10
Memmon RUNNING pid 6074, uptime 27 days, 18:31:10
almir FATAL Exited too quickly (process log may have details)
A restart all solves the problem:
supervisor> restart all
HttpOk: stopped
Memmon: stopped
HttpOk: started
Memmon: started
almir: started
(Too bad github issues doesn't have attachments...)
To support tablet devices and mobile phones, use twitter.bootstrap responsive design helpers.
If it has support for all features we currently use, switch to Cornice (by Mozilla)
We might download and compile bacula while setting up almir environment. Someday.
Installing Almir on Ubuntu 12.10 fails after the question of director password:
--> Password of director to connect to:
Connecting director with bconsole to verify configuration ...
Traceback (most recent call last):
File "almir/scripts/configure_deploy.py", line 197, in <module>
main() # PRAGMA: no cover
File "almir/scripts/configure_deploy.py", line 182, in main
password=options['director_password']) as bconsole:
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/opt/almir/almir/lib/bconsole.py", line 66, in from_temp_config
yield cls(config_file=f.name)
File "/opt/almir/almir/lib/bconsole.py", line 47, in __init__
self.config_file = registry.settings.get('bconsole_config',
AttributeError: 'NoneType' object has no attribute 'get'
Based on work done by @brodul
Hello,
I would like install almir on my CentOS6 to manage a bacula server.
When i start install_production.sh, I have an error with an import module with buildout.
When script run bin/buildout, buildout 2.0.1 is used, but in buildout.d/version.cfg you specified version 1.6.3. And when 2.0.1 buildout version is used module is_distribute are not imported and fail compilation.
So I add -v 1.6.3 on bootstrap.py to use the good version.
I think you can juste add this option in install_production.sh at line 9.
$PYTHON_EXEC bootstrap.py -v 1.6.3
Best Regards.
Simon
Error itself:
SQL connection string: postgresql://bacula:12345@localhost/bacula
Connecting to catalog database to verify configuration ...
Try again: No module named psycopg2
When I check for this module manually everything is ok
python
import psycopg2
no error here
where to dig?
Clicking on the client's name link for several of our 15 clients returens an internal server error:
Broswer window shows only:
--[snip]--
Internal Server Error
The server encountered an unexpected internal server error
(generated by waitress)
--[snip]--
nginx access log file shows only these two lines when that error is encounters:
192.168.254.4 - - [02/Apr/2012:17:47:20 -0400] "GET /client/13/ HTTP/1.1" 500 110 "http://almir.revpol.com:8000/client/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"
192.168.254.4 - - [02/Apr/2012:17:47:20 -0400] "GET /favicon.ico HTTP/1.1" 404 1153 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"
Most other client's pages display just fine
Bill Arlofski
Write documentation how to upgrade almir.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.