publicURL endpoint for s3 service not found

Bug #1477457 reported by Alexander Adamov
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Fuel for OpenStack
Invalid
High
Fuel Library (Deprecated)
6.1.x
Invalid
High
Alexey Stupnikov
7.0.x
Invalid
High
Fuel Library (Deprecated)

Bug Description

Env: 1 controller+Ceph, 1 compute+Ceph. Enabled Ceph RBD+RadosGW.

When running:
   root@node-1:~# keystone endpoint-get --service 's3'

got the following result:
   publicURL endpoint for s3 service not found

Should be:
      +-----------------+------------------------------------ +
      | Property | Value |
     +------------------+------------------------------------+
      | s3.publicURL | http://172.16.0.2:8080 |
      +-----------------+-------------------------------------+

Ceph verification:

root@node-1:~# sudo radosgw-admin user create --uid="testuser" --display-name="First User"
{ "user_id": "testuser",
  "display_name": "First User",
  "email": "",
  "suspended": 0,
  "max_buckets": 1000,
  "auid": 0,
  "subusers": [],
  "keys": [
        { "user": "testuser",
          "access_key": "U66JXYCCJZH5XI1TAR6M",
          "secret_key": "Uem\/P226omznTmzrqK\/8G5+1VWBHxZDTDlvLAT6v"}],
  "swift_keys": [],
  "caps": [],
  "op_mask": "read, write, delete",
  "default_placement": "",
  "placement_tags": [],
  "bucket_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "user_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "temp_url_keys": []}

s3test.py:

import boto
import boto.s3.connection
access_key = 'U66JXYCCJZH5XI1TAR6M'
secret_key = 'Uem\/P226omznTmzrqK\/8G5+1VWBHxZDTDlvLAT6v'
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = '172.16.0.2',
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('my-new-bucket')
for bucket in conn.get_all_buckets():
        print "{name}\t{created}".format(
                name = bucket.name,
                created = bucket.creation_date,
)

Result:

root@node-1:~# python s3test.py
Traceback (most recent call last):
  File "s3test.py", line 12, in <module>
    bucket = conn.create_bucket('my-new-bucket')
  File "/usr/lib/python2.7/dist-packages/boto/s3/connection.py", line 621, in create_bucket
    response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 405 Method Not Allowed
None

Version:

[root@fuel ~]# cat /etc/fuel/version.yaml
VERSION:
  feature_groups:
    - mirantis
  production: "docker"
  release: "6.1"
  openstack_version: "2014.2.2-6.1"
  api: "1.0"
  build_number: "525"
  build_id: "2015-06-19_13-02-31"
  nailgun_sha: "dbd54158812033dd8cfd7e60c3f6650f18013a37"
  python-fuelclient_sha: "4fc55db0265bbf39c369df398b9dc7d6469ba13b"
  astute_sha: "1ea8017fe8889413706d543a5b9f557f5414beae"
  fuel-library_sha: "2e7a08ad9792c700ebf08ce87f4867df36aa9fab"
  fuel-ostf_sha: "8fefcf7c4649370f00847cc309c24f0b62de718d"
  fuelmain_sha: "a3998372183468f56019c8ce21aa8bb81fee0c2f"

It worked well on build 511.

Related issue: https://bugs.launchpad.net/fuel/+bug/1446704

Tags: ceph radosgw
Changed in fuel:
assignee: nobody → Fuel Library Team (fuel-library)
Changed in fuel:
milestone: none → 7.0
importance: Undecided → Medium
status: New → Confirmed
Changed in fuel:
assignee: Fuel Library Team (fuel-library) → Bartlomiej Piotrowski (bpiotrowski)
Changed in fuel:
importance: Medium → High
Revision history for this message
Alex Schultz (alex-schultz) wrote :

So I have confirmed this works fine on 7.0. The 405 error message is because your script is not properly specifying a port so you are trying to post to the horizon vip on port 80 which gives a 405.

root@node-4:~# keystone endpoint-get --service 's3'
/usr/lib/python2.7/dist-packages/keystoneclient/shell.py:65: DeprecationWarning: The keystone CLI is deprecated in favor of python-openstackclient. For a Python library, continue using python-keystoneclient.
  'python-keystoneclient.', DeprecationWarning)
+--------------+-------------------------+
| Property | Value |
+--------------+-------------------------+
| s3.publicURL | https://172.16.0.8:8080 |
+--------------+-------------------------+
root@node-4:~# python s3test.py
my-new-bucket 2015-08-03T20:25:12.000Z

My s3test.py:

import boto
import boto.s3.connection
import logging
logging.basicConfig(filename='/tmp/s3.log',level=logging.DEBUG)
access_key = "44K5MERBD4BJB4AK8KA8"
secret_key = "aXBCtBgWtBXJonYT4L/jMSFCMQ4Rnsiq4n8IfsdS"
conn = boto.connect_s3(
 aws_access_key_id = access_key,
 aws_secret_access_key = secret_key,
 host = '172.16.0.8',
 port = 8080,
 is_secure=True,
 calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('my-new-bucket')
for bucket in conn.get_all_buckets():
        print "{name}\t{created}".format(
                name = bucket.name,
                created = bucket.creation_date,
)

Revision history for this message
Alexey Stupnikov (astupnikov) wrote :

I have set this bug's status to invalid for MOS 6.1 since I have got the same diag results as Alex Schultz in previous message. Looks like wrong port was selected.

Revision history for this message
Alexey Stupnikov (astupnikov) wrote :

OK, I have doublechecked everything and have a following resume on this bug. In first message it is stated that:
1. there is no endpoint for service 's3';
2. radosgw doesn't work correctly.

First issue is not a bug, since keystone s3 endpoint and keystone s3 service are not configured by default with ceph deployment, since swift::keystone::auth class is not used.

Second issue was addressed in bug #1446704 and it is stated it was fixed and ceph s3 api is working correctly.

Based on the data above, I am closing this bug as Invalid for 6.1 branch.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.