[Yahoo-eng-team] [Bug 1404073] Re: type should be required for v2.0 service create
** Changed in: python-keystoneclient Milestone: None = 1.1.0 ** Changed in: python-keystoneclient Importance: Undecided = Low ** Changed in: python-keystoneclient Status: Fix Committed = Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Keystone. https://bugs.launchpad.net/bugs/1404073 Title: type should be required for v2.0 service create Status in OpenStack Identity (Keystone): Won't Fix Status in Python client library for Keystone: Fix Released Status in OpenStack Command Line Client: Fix Released Bug description: For v2.0, the API says the following, but is unclear about what is required vs. optional http://developer.openstack.org/api-ref-identity-v2.html { OS-KSADM:service: { id: 123, name: nova, type: compute, description: OpenStack Compute Service } } Based on the v3 API, type should be the only argument that is required. However, looking at what is implemented, there is very little validation going on. 'id' is assigned set at the controller level: https://github.com/openstack/keystone/blob/master/keystone/catalog/controllers.py#L53-L60 And 'enabled' which is missing from the API is set at the manager level: https://github.com/openstack/keystone/blob/master/keystone/catalog/core.py#L145-L147 There is no validation performed at any level, leaving it up to the backends, for the SQL backend for instance, only 'enabled' is required: https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L57-L65 class Service(sql.ModelBase, sql.DictBase): __tablename__ = 'service' attributes = ['id', 'type', 'enabled'] id = sql.Column(sql.String(64), primary_key=True) type = sql.Column(sql.String(255)) enabled = sql.Column(sql.Boolean, nullable=False, default=True, server_default=sqlalchemy.sql.expression.true()) extra = sql.Column(sql.JsonBlob()) endpoints = sqlalchemy.orm.relationship(Endpoint, backref=service) Which means the following call works, and is very useless: $ http post http://localhost:35357/v2.0/OS-KSADM/services '{OS-KSADM:service: {}}' --x-auth-token=ADMIN { OS-KSADM:service: { type: null, enabled: true, id: fe937fd1152f494d88edd89e3adbfe1f } } Keystoneclient requires name, type and description. https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v2_0/services.py#L38-L43 It should probably at least default some of those to None. Lastly OpenstackClient has only 'name' as a required argument. $ openstack service create --type service_type_1 usage: openstack service create [-h] [-f {html,json,shell,table,value,yaml}] [-c COLUMN] [--max-width integer] [--prefix PREFIX] --type service-type [--description service-description] service-name openstack service create: error: too few arguments We should probably make this similar to v3, where the only required argument is 'type', and name/description are optional. To manage notifications about this bug go to: https://bugs.launchpad.net/keystone/+bug/1404073/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp
[Yahoo-eng-team] [Bug 1404073] Re: type should be required for v2.0 service create
While the resulting service is not very useful I don't want to change the behavior of the V2 API itself. Unless there is a very very compelling reason, I'm going to leave this as wont fix since the V2 api is frozen *and* is really only open for security fixes. ** Changed in: keystone Status: New = Won't Fix -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Keystone. https://bugs.launchpad.net/bugs/1404073 Title: type should be required for v2.0 service create Status in OpenStack Identity (Keystone): Won't Fix Status in Python client library for Keystone: Fix Committed Status in OpenStack Command Line Client: Fix Released Bug description: For v2.0, the API says the following, but is unclear about what is required vs. optional http://developer.openstack.org/api-ref-identity-v2.html { OS-KSADM:service: { id: 123, name: nova, type: compute, description: OpenStack Compute Service } } Based on the v3 API, type should be the only argument that is required. However, looking at what is implemented, there is very little validation going on. 'id' is assigned set at the controller level: https://github.com/openstack/keystone/blob/master/keystone/catalog/controllers.py#L53-L60 And 'enabled' which is missing from the API is set at the manager level: https://github.com/openstack/keystone/blob/master/keystone/catalog/core.py#L145-L147 There is no validation performed at any level, leaving it up to the backends, for the SQL backend for instance, only 'enabled' is required: https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L57-L65 class Service(sql.ModelBase, sql.DictBase): __tablename__ = 'service' attributes = ['id', 'type', 'enabled'] id = sql.Column(sql.String(64), primary_key=True) type = sql.Column(sql.String(255)) enabled = sql.Column(sql.Boolean, nullable=False, default=True, server_default=sqlalchemy.sql.expression.true()) extra = sql.Column(sql.JsonBlob()) endpoints = sqlalchemy.orm.relationship(Endpoint, backref=service) Which means the following call works, and is very useless: $ http post http://localhost:35357/v2.0/OS-KSADM/services '{OS-KSADM:service: {}}' --x-auth-token=ADMIN { OS-KSADM:service: { type: null, enabled: true, id: fe937fd1152f494d88edd89e3adbfe1f } } Keystoneclient requires name, type and description. https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v2_0/services.py#L38-L43 It should probably at least default some of those to None. Lastly OpenstackClient has only 'name' as a required argument. $ openstack service create --type service_type_1 usage: openstack service create [-h] [-f {html,json,shell,table,value,yaml}] [-c COLUMN] [--max-width integer] [--prefix PREFIX] --type service-type [--description service-description] service-name openstack service create: error: too few arguments We should probably make this similar to v3, where the only required argument is 'type', and name/description are optional. To manage notifications about this bug go to: https://bugs.launchpad.net/keystone/+bug/1404073/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp
[Yahoo-eng-team] [Bug 1404073] Re: type should be required for v2.0 service create
** Changed in: python-openstackclient Status: Fix Committed = Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Keystone. https://bugs.launchpad.net/bugs/1404073 Title: type should be required for v2.0 service create Status in OpenStack Identity (Keystone): New Status in Python client library for Keystone: In Progress Status in OpenStack Command Line Client: Fix Released Bug description: For v2.0, the API says the following, but is unclear about what is required vs. optional http://developer.openstack.org/api-ref-identity-v2.html { OS-KSADM:service: { id: 123, name: nova, type: compute, description: OpenStack Compute Service } } Based on the v3 API, type should be the only argument that is required. However, looking at what is implemented, there is very little validation going on. 'id' is assigned set at the controller level: https://github.com/openstack/keystone/blob/master/keystone/catalog/controllers.py#L53-L60 And 'enabled' which is missing from the API is set at the manager level: https://github.com/openstack/keystone/blob/master/keystone/catalog/core.py#L145-L147 There is no validation performed at any level, leaving it up to the backends, for the SQL backend for instance, only 'enabled' is required: https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L57-L65 class Service(sql.ModelBase, sql.DictBase): __tablename__ = 'service' attributes = ['id', 'type', 'enabled'] id = sql.Column(sql.String(64), primary_key=True) type = sql.Column(sql.String(255)) enabled = sql.Column(sql.Boolean, nullable=False, default=True, server_default=sqlalchemy.sql.expression.true()) extra = sql.Column(sql.JsonBlob()) endpoints = sqlalchemy.orm.relationship(Endpoint, backref=service) Which means the following call works, and is very useless: $ http post http://localhost:35357/v2.0/OS-KSADM/services '{OS-KSADM:service: {}}' --x-auth-token=ADMIN { OS-KSADM:service: { type: null, enabled: true, id: fe937fd1152f494d88edd89e3adbfe1f } } Keystoneclient requires name, type and description. https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v2_0/services.py#L38-L43 It should probably at least default some of those to None. Lastly OpenstackClient has only 'name' as a required argument. $ openstack service create --type service_type_1 usage: openstack service create [-h] [-f {html,json,shell,table,value,yaml}] [-c COLUMN] [--max-width integer] [--prefix PREFIX] --type service-type [--description service-description] service-name openstack service create: error: too few arguments We should probably make this similar to v3, where the only required argument is 'type', and name/description are optional. To manage notifications about this bug go to: https://bugs.launchpad.net/keystone/+bug/1404073/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp
[Yahoo-eng-team] [Bug 1404073] Re: type should be required for v2.0 service create
** Summary changed: - name should be optional for service-create + type should be required for v2.0 service create ** Also affects: python-keystoneclient Importance: Undecided Status: New ** Also affects: keystone Importance: Undecided Status: New -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Keystone. https://bugs.launchpad.net/bugs/1404073 Title: type should be required for v2.0 service create Status in OpenStack Identity (Keystone): New Status in Python client library for Keystone: New Status in OpenStack Command Line Client: New Bug description: According to the api http://specs.openstack.org/openstack/keystone- specs/api/v3/identity-api-v3.html only the service type is mandatory. name, description and enabled field are optional. openstack-client should not require the name as it is optional in the service, this is to make the validation consistent. $ openstack service create --type service_type_1 usage: openstack service create [-h] [-f {html,json,shell,table,value,yaml}] [-c COLUMN] [--max-width integer] [--prefix PREFIX] --type service-type [--description service-description] service-name openstack service create: error: too few arguments Type should be the only field required and name should be optional. This is for keystone v3. To manage notifications about this bug go to: https://bugs.launchpad.net/keystone/+bug/1404073/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp