It's really unexpected. No UNIX utility behaves like that. The closest you can see in actual usage is ssh, where you specify configuration options with the -o 'ConfigName ConfigValue' command line option, but actual options like --some-option have no equivalent in the configuration.
El Friday, September 17, 2010, Joshua McKenty escribió: > There's a blueprint on this topic (optparser) already, and a rather lengthy > debate went on early in nova development about whether config and CLI > should be overlapping. As I pointed out in IRC the other day, we went with > the gflags approach (e.g., doing it the way google does), simply because > that was what termie was most familiar with, and none of the rest of us > had a strong enough preference to argue (much). > > As far as it being totally unexpected, it's not really. I had thought that > the debian package at least generated some flagfiles - I'm sure that the > chef cookbook does. > > Joshua > > On Fri, Sep 17, 2010 at 2:55 AM, Manuel Amador (Rudd-O) > > <[email protected]>wrote: > > Seriously -- it is totally unexpected that the command-line options > > double as > > the run-time configuration of the programs, or that a specified config > > file option invalid for a particular program does not make it exit with > > $? = 64. > > > > If the complexity of the stack is such that you are in practice going to > > require people to create config files, then I highly suggest not abusing > > the > > concept of command-line options for that; rather, just ship example > > configuration files with sane defaults, and document the alternatives > > right in > > the config file. > > > > This makes it *WAY* easier for the beginner user to get around to set up > > the > > openstack, and it *does not* break formal expectations of command line > > options. > > > > El Thursday, September 16, 2010, Vishvananda Ishaya escribió: > > > Yes we modified python-gflags to ignore unknown options. This allows > > > us > > > > to > > > > > specify options in dynamically imported files and to use the same > > > > flagfile > > > > > for all of the binaries if necessary. > > > > > > --help should show the majority of the available flags, but if there > > > are flags in dynamically imported files they will not show up. For > > > example flags in volume/manager.py do not show up in --help, nor do > > > the flags in volume/driver.py, but they are used in nova-volume > > > > > > we should probably use flags.DECLARE to show the possible flags in > > > > --help, > > > > > but it is a little challenging with pluggable backends. Perhaps the > > > best solution would be to add a flags.DEFINE_plugin which works like > > > DEFINE_string but will import the specified file and add any other > > > flags that are defined in it. > > > > > > As far as validating the flags, it is a tradeoff. Not validating means > > > > we > > > > > can throw a bunch of flags into a file and not care if there are extras > > > specified, but validating saves you from mistyped flags. If we had the > > > above DEFINE support we could switch to validating flags again. > > > > > > Vish > > > > > > On Sep 16, 2010, at 5:16 PM, Manuel Amador (Rudd-O) wrote: > > > > So when you say flags, what you mean is command-line options? > > > > > > > > Then I have to report that I can pass any number of crazy nonsense > > > > options to the nova programs, and the programs do not validate them. > > > > > > > > I did not use pip. I do not like to rely on non-package manager > > > > programs > > > > > > modifying my /usr. > > > > > > > > OK, so I can ignore the errors. > > > > > > > > I can see the project admin was created. > > > > > > > > THANKS! > > > > > > > > El Thursday, September 16, 2010, Vishvananda Ishaya escribió: > > > >> Those errors are normal. SQLite isn't very good with multiple > > > > threads, > > > > > >> but it doesn't actually cause any real problems. > > > >> > > > >> Don't know why redis wasn't installed, it should have gotten it from > > > > the > > > > > >> pip requires. > > > >> > > > >> You can ignore the scheduler error, it is in the scheduler branch, > > > > which > > > > > >> hasn't been merged into trunk yet. > > > >> > > > >> nova uses python-gflags. To set flags you can either use > > > >> --FLAGNAME=FLAGVALUE on the commandline when you run each of the > > > >> bins > > > > or > > > > > >> you can stick a bunch of them into a file with one line per flag, > > > >> like so --s3_url=127.0.0.1 > > > >> --auth_driver=nova.auth.ldapdriver.LdapDriver > > > >> and specify the file on the commandline: > > > >> ./nova-compute --flagfile=/path/to/flagfile > > > >> > > > >> If you have further questions, you might want to just jump in > > > > #openstack > > > > > >> and irc.freenode.net and we can discuss there. > > > >> > > > >> On Sep 16, 2010, at 2:20 PM, Manuel Amador (Rudd-O) wrote: > > > >>> When I ran > > > >>> > > > >>> bin/nova-manage project create admin admin > > > >>> > > > >>> Nova-volume said this: > > > >>> > > > >>> ------------------------- > > > >>> ERROR:root:model server went away > > > >>> > > > >>> Traceback (most recent call last): > > > >>> File "/home/rudd-o/openstack/nova/nova/service.py", line 139, in > > > >>> > > > >>> report_state > > > >>> > > > >>> service_ref = db.service_get(context, self.service_id) > > > >>> > > > >>> File "/home/rudd-o/openstack/nova/nova/db/api.py", line 56, in > > > >>> service_get > > > >>> > > > >>> return IMPL.service_get(context, service_id) > > > >>> > > > >>> File "/home/rudd-o/openstack/nova/nova/db/sqlalchemy/api.py", line > > > > 50, > > > > > >>> in > > > >>> > > > >>> service_get > > > >>> > > > >>> return models.Service.find(service_id) > > > >>> > > > >>> File "/home/rudd-o/openstack/nova/nova/db/sqlalchemy/models.py", > > > >>> line 79, in > > > >>> > > > >>> find > > > >>> > > > >>> ).filter_by(deleted=deleted > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", > > > >>> line 1522, > > > >>> > > > >>> in one > > > >>> > > > >>> ret = list(self) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", > > > >>> line 1565, > > > >>> > > > >>> in __iter__ > > > >>> > > > >>> return self._execute_and_instances(context) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", > > > >>> line 1570, > > > >>> > > > >>> in _execute_and_instances > > > >>> > > > >>> mapper=self._mapper_zero_or_none()) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/session.py", > > > > line > > > > > >>> 735, > > > >>> > > > >>> in execute > > > >>> > > > >>> clause, params or {}) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py", > > > > line > > > > > >>> 1157, in execute > > > >>> > > > >>> params) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py", > > > > line > > > > > >>> 1237, in _execute_clauseelement > > > >>> > > > >>> return self.__execute_context(context) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py", > > > > line > > > > > >>> 1268, in __execute_context > > > >>> > > > >>> context.parameters[0], context=context) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py", > > > > line > > > > > >>> 1367, in _cursor_execute > > > >>> > > > >>> context) > > > >>> > > > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py", > > > > line > > > > > >>> 1360, in _cursor_execute > > > >>> > > > >>> context) > > > >>> > > > >>> File > > > >>> "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/default.py", > > > >>> line > > > >>> > > > >>> 288, in do_execute > > > >>> > > > >>> cursor.execute(statement, parameters) > > > >>> > > > >>> OperationalError: (OperationalError) database is locked u'SELECT > > > >>> services.created_at AS services_created_at, services.updated_at AS > > > >>> services_updated_at, services.deleted_at AS services_deleted_at, > > > >>> services.deleted AS services_deleted, services.id AS services_id, > > > >>> services.host AS services_host, services.binary AS services_binary, > > > >>> services.topic AS services_topic, services.report_count AS > > > >>> services_report_count \nFROM services \nWHERE services.id = ? AND > > > >>> services.deleted = ?' (2, False) > > > >>> 2010-09-16 14:19:17-0700 [-] (root): ERROR model server went away > > > >>> 2010-09-16 14:19:17-0700 [-] Traceback (most recent call last): > > > >>> 2010-09-16 14:19:17-0700 [-] File "/home/rudd- > > > >>> o/openstack/nova/nova/service.py", line 139, in report_state > > > >>> 2010-09-16 14:19:17-0700 [-] service_ref = > > > > db.service_get(context, > > > > > >>> self.service_id) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/home/rudd- > > > >>> o/openstack/nova/nova/db/api.py", line 56, in service_get > > > >>> 2010-09-16 14:19:17-0700 [-] return IMPL.service_get(context, > > > >>> service_id) 2010-09-16 14:19:17-0700 [-] File "/home/rudd- > > > >>> o/openstack/nova/nova/db/sqlalchemy/api.py", line 50, in > > > >>> service_get 2010-09-16 14:19:17-0700 [-] return > > > > models.Service.find(service_id) > > > > > >>> 2010-09-16 14:19:17-0700 [-] File "/home/rudd- > > > >>> o/openstack/nova/nova/db/sqlalchemy/models.py", line 79, in find > > > >>> 2010-09-16 14:19:17-0700 [-] ).filter_by(deleted=deleted > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/orm/query.py", line 1522, in one > > > >>> 2010-09-16 14:19:17-0700 [-] ret = list(self) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/orm/query.py", line 1565, in __iter__ > > > >>> 2010-09-16 14:19:17-0700 [-] return > > > >>> self._execute_and_instances(context) 2010-09-16 14:19:17-0700 [-] > > > >>> File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/orm/query.py", line 1570, in > > > > _execute_and_instances > > > > > >>> 2010-09-16 14:19:17-0700 [-] > > > >>> mapper=self._mapper_zero_or_none()) 2010-09-16 14:19:17-0700 [-] > > > >>> File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/orm/session.py", line 735, in execute > > > >>> 2010-09-16 14:19:17-0700 [-] clause, params or {}) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/base.py", line 1157, in execute > > > >>> 2010-09-16 14:19:17-0700 [-] params) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/base.py", line 1237, in > > > >>> _execute_clauseelement 2010-09-16 14:19:17-0700 [-] return > > > >>> self.__execute_context(context) 2010-09-16 14:19:17-0700 [-] File > > > >>> "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/base.py", line 1268, in > > > >>> __execute_context 2010-09-16 14:19:17-0700 [-] > > > >>> context.parameters[0], > > > >>> context=context) 2010-09-16 14:19:17-0700 [-] File > > > >>> "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/base.py", line 1367, in _cursor_execute > > > >>> 2010-09-16 14:19:17-0700 [-] context) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/base.py", line 1360, in _cursor_execute > > > >>> 2010-09-16 14:19:17-0700 [-] context) > > > >>> 2010-09-16 14:19:17-0700 [-] File "/usr/lib/python2.6/dist- > > > >>> packages/sqlalchemy/engine/default.py", line 288, in do_execute > > > >>> 2010-09-16 14:19:17-0700 [-] cursor.execute(statement, > > > > parameters) > > > > > >>> 2010-09-16 14:19:17-0700 [-] OperationalError: (OperationalError) > > > >>> database is locked u'SELECT services.created_at AS > > > > services_created_at, > > > > > >>> services.updated_at AS services_updated_at, services.deleted_at AS > > > >>> services_deleted_at, services.deleted AS services_deleted, > > > > services.id > > > > > >>> AS services_id, services.host AS services_host, services.binary AS > > > >>> services_binary, services.topic AS services_topic, > > > >>> services.report_count AS services_report_count \nFROM services > > > > \nWHERE > > > > > >>> services.id = ? AND services.deleted = ?' (2, False) > > > >>> ERROR:root:Recovered model server connection! > > > >>> 2010-09-16 14:19:52-0700 [-] (root): ERROR Recovered model server > > > >>> connection --------------------------- > > > >>> > > > >>> Identical tracebacks in nova-network and nova-compute. > > > >>> > > > >>> I am stuck here :-) > > > >>> > > > >>> _______________________________________________ > > > >>> Mailing list: https://launchpad.net/~nova > > > >>> Post to : [email protected] > > > >>> Unsubscribe : https://launchpad.net/~nova > > > >>> More help : https://help.launchpad.net/ListHelp > > > > _______________________________________________ > > Mailing list: https://launchpad.net/~nova > > Post to : [email protected] > > Unsubscribe : https://launchpad.net/~nova > > More help : https://help.launchpad.net/ListHelp _______________________________________________ Mailing list: https://launchpad.net/~nova Post to : [email protected] Unsubscribe : https://launchpad.net/~nova More help : https://help.launchpad.net/ListHelp

