OpenStack-Dashboard problems

Asked by Laurent Borensky on 2011-06-22

Hello,

I am continuing my work to upload OpenStack, but I still have two problems with OpenStack-Dashboard:

1) Why when I launch a VM, the public address is not displayed. Must perform the operation on the back end with the commands "eucalyptus-associate & allocate" to make it appear?

2) Under the admin dashboard, it is impossible to create users. See the tracks below.

DEBUG:boto:Host: None
DEBUG:boto:establishing HTTP connection
DEBUG:boto:<?xml version="1.0" ?><DescribeProjectsResponse xmlns="http://ec2.amazonaws.com/doc/nova/"><requestId>9Y14M7AZC9BLULG0F44T</requestId><projectSet><item><projectname>projet1</projectname><projectManagerId>novaadmin</projectManagerId><description>projet1</description></item></projectSet></DescribeProjectsResponse>
[22/Jun/2011 11:01:51] "GET /admin/project/ HTTP/1.1" 200 3104
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:01:51.451525 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:01:51.451525')
[22/Jun/2011 11:01:51] "GET /stylesheets/extra_admin.css HTTP/1.1" 404 3459
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:01:54.188554 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:01:54.188554')
DEBUG:django.db.backends:(0.002) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
DEBUG:django.db.backends:(0.000) SELECT "django_admin_log"."id", "django_admin_log"."action_time", "django_admin_log"."user_id", "django_admin_log"."content_type_id", "django_admin_log"."object_id", "django_admin_log"."object_repr", "django_admin_log"."action_flag", "django_admin_log"."change_message", "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined", "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" FROM "django_admin_log" INNER JOIN "auth_user" ON ("django_admin_log"."user_id" = "auth_user"."id") LEFT OUTER JOIN "django_content_type" ON ("django_admin_log"."content_type_id" = "django_content_type"."id") WHERE "django_admin_log"."user_id" = 1 ORDER BY "django_admin_log"."action_time" DESC LIMIT 10; args=(1,)
[22/Jun/2011 11:01:54] "GET /admin/ HTTP/1.1" 200 5156
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:01:58.368763 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:01:58.368763')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
DEBUG:django.db.backends:(0.000) SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE ("django_content_type"."model" = user AND "django_content_type"."app_label" = auth ); args=('user', 'auth')
[22/Jun/2011 11:01:58] "GET /admin/auth/user/add/ HTTP/1.1" 200 4865
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:01:58.469901 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:01:58.469901')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
[22/Jun/2011 11:01:58] "GET /admin/jsi18n/ HTTP/1.1" 200 2258
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:02:18.466028 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:02:18.466028')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = laurent ; args=(u'laurent',)
DEBUG:django.db.backends:(0.000) SELECT (1) AS "a" FROM "auth_user" WHERE "auth_user"."username" = laurent LIMIT 1; args=(u'laurent',)
[22/Jun/2011 11:02:18] "POST /admin/auth/user/add/ HTTP/1.1" 200 5042
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:02:18.595370 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:02:18.595370')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
[22/Jun/2011 11:02:18] "GET /admin/jsi18n/ HTTP/1.1" 200 2258
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:02:41.494353 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:02:41.494353')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = laurent ; args=(u'laurent',)
DEBUG:django.db.backends:(0.000) SELECT (1) AS "a" FROM "auth_user" WHERE "auth_user"."username" = laurent LIMIT 1; args=(u'laurent',)
[22/Jun/2011 11:02:41] "POST /admin/auth/user/add/ HTTP/1.1" 200 5109
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:02:41.592764 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:02:41.592764')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
[22/Jun/2011 11:02:41] "GET /admin/jsi18n/ HTTP/1.1" 200 2258
DEBUG:django.db.backends:(0.001) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."session_key" = f88a9a6ab1a61304292c36b8c6395eba AND "django_session"."expire_date" > 2011-06-22 11:02:53.206865 ); args=('f88a9a6ab1a61304292c36b8c6395eba', u'2011-06-22 11:02:53.206865')
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 ; args=(1,)
DEBUG:django.db.backends:(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."username" = laurent ; args=(u'laurent',)
DEBUG:django.db.backends:(0.000) SELECT (1) AS "a" FROM "auth_user" WHERE "auth_user"."username" = laurent LIMIT 1; args=(u'laurent',)
DEBUG:django.db.backends:(0.000) INSERT INTO "auth_user" ("username", "first_name", "last_name", "email", "password", "is_staff", "is_active", "is_superuser", "last_login", "date_joined") VALUES (laurent, , , , sha1$ab623$ae1c408827b2502c19fb9bc595192d4d3b55c5a9, False, True, False, 2011-06-22 11:02:53.217206, 2011-06-22 11:02:53.217227); args=(u'laurent', '', '', '', 'sha1$ab623$ae1c408827b2502c19fb9bc595192d4d3b55c5a9', False, True, False, u'2011-06-22 11:02:53.217206', u'2011-06-22 11:02:53.217227')
DEBUG:boto:using calc_signature_2
DEBUG:boto:query string: AWSAccessKeyId=5d5d3414-9502-41a7-80e4-40af37e72abc%3Aprojet1&Action=DescribeUser&Name=laurent&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-06-22T09%3A02%3A53&Version=nova
DEBUG:boto:string_to_sign: GET
localhost:8773
/services/Admin/
AWSAccessKeyId=5d5d3414-9502-41a7-80e4-40af37e72abc%3Aprojet1&Action=DescribeUser&Name=laurent&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-06-22T09%3A02%3A53&Version=nova
DEBUG:boto:len(b64)=44
DEBUG:boto:base64 encoded digest: OV7/nU6lb6IWo0SmvtTKnj+GM3uAhF8LH3Bvy/ZuU+E=
DEBUG:boto:Canonical: GET

Wed, 22 Jun 2011 09:02:53 GMT
/services/Admin/services/Admin/
DEBUG:boto:Method: GET
DEBUG:boto:Path: /services/Admin/?AWSAccessKeyId=5d5d3414-9502-41a7-80e4-40af37e72abc%3Aprojet1&Action=DescribeUser&Name=laurent&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2011-06-22T09%3A02%3A53&Version=nova&Signature=OV7/nU6lb6IWo0SmvtTKnj%2BGM3uAhF8LH3Bvy/ZuU%2BE%3D
DEBUG:boto:Data:
DEBUG:boto:Headers: {'Date': 'Wed, 22 Jun 2011 09:02:53 GMT', 'Content-Length': '0', 'Authorization': 'AWS 5d5d3414-9502-41a7-80e4-40af37e72abc:projet1:zScLjsHG1wdNeAI2LAkDQiQdFZs=', 'User-Agent': 'Boto/1.9b (linux2)'}
DEBUG:boto:Host: None
DEBUG:boto:establishing HTTP connection
DEBUG:boto:<?xml version="1.0"?>
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id laurent</Message></Error></Errors><RequestID>K0W8QAV0KZZSV-6TRVRE</RequestID></Response>
ERROR:boto:400 Bad Request
ERROR:boto:<?xml version="1.0"?>
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id laurent</Message></Error></Errors><RequestID>K0W8QAV0KZZSV-6TRVRE</RequestID></Response>
CRITICAL:openstack_dashboard:Unhandled Exception in dashboard. Exception "EC2ResponseError: 400 Bad Request
<?xml version="1.0"?>
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id laurent</Message></Error></Errors><RequestID>K0W8QAV0KZZSV-6TRVRE</RequestID></Response>"
Traceback (most recent call last):
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/admin/options.py", line 307, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 93, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/views/decorators/cache.py", line 79, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 197, in inner
    return view(request, *args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 28, in _wrapper
    return bound_func(*args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 93, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 24, in bound_func
    return func(self, *args2, **kwargs2)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/db/transaction.py", line 217, in inner
    res = func(*args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/auth/admin.py", line 103, in add_view
    return super(UserAdmin, self).add_view(request, form_url, extra_context)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 28, in _wrapper
    return bound_func(*args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 93, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/utils/decorators.py", line 24, in bound_func
    return func(self, *args2, **kwargs2)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/db/transaction.py", line 217, in inner
    res = func(*args, **kwargs)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/admin/options.py", line 882, in add_view
    self.save_model(request, new_object, form, change=False)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/admin/options.py", line 665, in save_model
    obj.save()
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/db/models/base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/db/models/base.py", line 570, in save_base
    created=(not record_exists), raw=raw, using=using)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/opt/osdb/django-openstack/src/django_openstack/models.py", line 127, in user_post_save
    if not nova.has_user(instance.username):
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/nova_adminclient/client.py", line 370, in has_user
    return self.get_user(username) != None
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/nova_adminclient/client.py", line 359, in get_user
    UserInfo)
  File "/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/boto/connection.py", line 631, in get_object
    raise self.ResponseError(response.status, response.reason, body)
EC2ResponseError: EC2ResponseError: 400 Bad Request
<?xml version="1.0"?>
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id laurent</Message></Error></Errors><RequestID>K0W8QAV0KZZSV-6TRVRE</RequestID></Response>

Thank you for your help.

Question information

Language:
English Edit question
Status:
Solved
For:
OpenStack Compute (nova) Edit question
Assignee:
No assignee Edit question
Solved by:
Laurent Borensky
Solved:
2011-06-24
Last query:
2011-06-24
Last reply:
2011-06-22

root@server1# sqlite3 *.3 <CR>
SQLite version 3.7.4
sqlite> .tables;
auth_group
auth_group_permissions
auth_message
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_comment_flags
django_comments
django_content_type
django_openstack_credentialsauthorization
django_session
django_site
registration_registrationprofile
sqlite> select * from auth_user; <CR>
1|novaadmin|||<email address hidden>|sha1$67402$f2576b9b52ca43f8dd53bd1f6332913bbda35dba|1|1|1|2011-06-22 10:58:47.170296|2011-06-15 12:58:48.109344
sqlite> select * from django_site; <CR>
1|example.com|example.com
2|pcop.dyndns.org|pcop.dynsdns.org
sqlite> .exit
root@server1#

Info about INSERT request (extract of log) :
INSERT INTO "auth_user" ("username", "first_name",
"last_name",
"email",
"password",
"is_staff",
"is_active",
"is_superuser",
"last_login",
"date_joined") VALUES (laurent,
,
,
, sha1$ab623$ae1c408827b2502c19fb9bc595192d4d3b55c5a9,
False,
True,
False,
2011-06-22 11:02:53.217206,
2011-06-22 11:02:53.217227); args=(u'laurent',
'',
'',
'',
'sha1$ab623$ae1c408827b2502c19fb9bc595192d4d3b55c5a9',
False,
True,
False,

Devin Carlen (devcamcar) said : #2

Hi Laurent,

Currently there isn't a way to associate a floating public IP using dashboard. There is an effort underway to support this feature, but it's not there as of today. For now you must use command line tools.

As far as your user issue is concerned, the user must exist both in the django database as well as the nova auth backend.

Normally when you create a user in Django, the dashboard should automatically create a corresponding user in nova. It's possible that you are running a fresh nova install against a pre-existing dashboard installation so the users aren't synched.

Fortunately synching the users is easy. You can use dashboard's manage.py to accomplish this:

python manage.py createnovausers

Vish Ishaya (vishvananda) said : #3

If you have lots of ips to burn, you can use
--auto_assign_floating_ip

Vish

On Jun 22, 2011, at 11:45 AM, Devin Carlen wrote:

> Question #162316 on OpenStack Compute (nova) changed:
> https://answers.launchpad.net/nova/+question/162316
>
> Status: Open => Answered
>
> Devin Carlen proposed the following answer:
> Hi Laurent,
>
> Currently there isn't a way to associate a floating public IP using
> dashboard. There is an effort underway to support this feature, but
> it's not there as of today. For now you must use command line tools.
>
> As far as your user issue is concerned, the user must exist both in the
> django database as well as the nova auth backend.
>
> Normally when you create a user in Django, the dashboard should
> automatically create a corresponding user in nova. It's possible that
> you are running a fresh nova install against a pre-existing dashboard
> installation so the users aren't synched.
>
> Fortunately synching the users is easy. You can use dashboard's
> manage.py to accomplish this:
>
> python manage.py createnovausers
>
> --
> You received this question notification because you are a member of Nova
> Core, which is an answer contact for OpenStack Compute (nova).

Hi,

Thank you for your answers. Unfortunately,

1) adding the option "- auto_assign_floating_ip" in nova.conf + restart services does not solve the problem.

2) the creation of an user in djanbo does not create user in "nova" and "djanbo" database.

Regards,

Contexte = Django version 1.3 & nova 2011.2-workspace:tarmac-20110415024701-a9bdb77vaatk99lh

Devin Carlen (devcamcar) said : #6

Hi Laurent, what are the settings for the admin account and endpoint in your settings file?

Hi at all,

a) Account settings "admin" that starts "runserver" are:

root@server1:/home/localadmin/creds# nova-manage user exports novaadmin <CR>
export EC2_ACCESS_KEY=5d5d3414-9502-41a7-80e4-40af37e72abc
export EC2_SECRET_KEY=cc6819c9-e723-4d84-9ff1-e0f743f40259

root@server1:/home/localadmin/creds# cat novarc <CR>
NOVA_KEY_DIR=$(pushd $(dirname $BASH_SOURCE)>/dev/null; pwd; popd>/dev/null)
export EC2_ACCESS_KEY="5d5d3414-9502-41a7-80e4-40af37e72abc:projet1"
export EC2_SECRET_KEY="cc6819c9-e723-4d84-9ff1-e0f743f40259"
export EC2_URL="http://10.10.10.2:8773/services/Cloud"
export S3_URL="http://10.10.10.2:3333"
export EC2_USER_ID=42 # nova does not use user id, but bundling requires it
export EC2_PRIVATE_KEY=${NOVA_KEY_DIR}/pk.pem
export EC2_CERT=${NOVA_KEY_DIR}/cert.pem
export NOVA_CERT=${NOVA_KEY_DIR}/cacert.pem
export EUCALYPTUS_CERT=${NOVA_CERT} # euca-bundle-image seems to require this set
alias ec2-bundle-image="ec2-bundle-image --cert ${EC2_CERT} --privatekey ${EC2_PRIVATE_KEY} --user 42 --ec2cert ${NOVA_CERT}"
alias ec2-upload-bundle="ec2-upload-bundle -a ${EC2_ACCESS_KEY} -s ${EC2_SECRET_KEY} --url ${S3_URL} --ec2cert ${NOVA_CERT}"
export NOVA_API_KEY="5d5d3414-9502-41a7-80e4-40af37e72abc"
export NOVA_USERNAME="novaadmin"
export NOVA_URL="http://10.10.10.2:8774/v1.0/"
root@server1:/home/localadmin/creds#

b) Local settings "django" are :

import os

DEBUG = True
TEMPLATE_DEBUG = DEBUG
PROD = False
USE_SSL = False

LOCAL_PATH = os.path.dirname(os.path.abspath(__file__))
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(LOCAL_PATH, 'dashboard_openstack.sqlite3'),
    },
}

CACHE_BACKEND = 'dummy://'

# Configure these for your outgoing email host
EMAIL_HOST = 'smtp.server1.pcop.dyndns.org'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'support'
EMAIL_HOST_PASSWORD = 'CloudOMC'

NOVA_DEFAULT_ENDPOINT = 'http://localhost:8773/services/Cloud'
NOVA_DEFAULT_REGION = 'nova'
NOVA_ACCESS_KEY = '5d5d3414-9502-41a7-80e4-40af37e72abc:projet1'
NOVA_SECRET_KEY = 'cc6819c9-e723-4d84-9ff1-e0f743f40259'
NOVA_ADMIN_USER = 'novaadmin'
NOVA_PROJECT = 'projet1'

Thank you for your help.

Regards,

Hi,

I do not understand why, when I created a user on Nova (ex: laurent), I can then create via the administration of the dashboard. Here all the information captured:

https://docs.google.com/?hl=fr&tab=wo&authuser=0#folders/folder.0.0B6UEJFMrvusLZDBkYjI3Y2QtMzYwNS00YjAwLThjOTQtMTRlNjZmZGZjY2Q3

Thank you for your help.

Hi at all,

The problem is here (file: /osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/nova_adminclient/client.py)

--- nova_adminclient/client.py.orig 2011-06-15 12:12:58.000000000 +0000
+++ nova_adminclient/client.py 2011-06-15 12:13:04.000000000 +0000
@@ -343,7 +343,7 @@
                                            {'Name': name},
                                            UserInfo)
         except boto.exception.BotoServerError, e:
- if e.status == 400 and e.error_code == 'UserNotFound':
+ if e.status == 400 and e.error_code == 'NotFound':
                 return None
             raise

I patch this file and this is good.

Bye.

Devin Carlen (devcamcar) said : #12

Hi Laurent, if you use nova-adminclient 0.1.6 it will work for you. After 0.1.7 this change was introduced to match the error message returned by Nova. My guess is that you're using a slightly older version of nova with the latest nova-adminclient.