Frank Ludolph wrote:
> Ethan Quach wrote:
>> Frank Ludolph wrote:
>>> Ethan Quach wrote:
>>>> Frank Ludolph wrote:
>>>>> Ethan Quach wrote:
>>>>>>
>>>>>>>
>>>>>>> - Be able to view the contents of a published manifest. Perhaps:
>>>>>>>
>>>>>>> installadm export-manifest -n <svcname> -m <manifest_name> [-o
>>>>>>> file]
>>>>>>>
>>>>>>>
>>>>>>> - Being able to edit the attributes of a published manifest would
>>>>>>> seem like a natural follow-on to the above, but I don't have any
>>>>>>> evidence yet that this is required. Given the ability to export the
>>>>>>> contents of a manifest, it should suffice for now to just export a
>>>>>>> manifest to file, make edits, and re-publish.
>>>>>>
>>>>>> If a manifest gets republished (i.e. we readd a manifest to a service
>>>>>> that already has that manifest name), we'll check if the criterion
>>>>>> for the already published manifest matches that of the one being
>>>>>> added. If they differ, ask user which one they want.
>>>>> It would probably be a good idea to do this only if the current
>>>>> manifest has been altered using the set-criteria command so that
>>>>> the user is queried only when appropriate. Perhaps a flag could be
>>>>> set in the current manifest by the set-criteria command.
>>>>
>>>> I don't really see that having edited a criteria by the 'set-criteria'
>>>> command as being special. My goal of creating subcommands to
>>>> externally administer the criteria was so that a user could start
>>>> out with a null criteria, add/remove criteria on the fly, and it
>>>> resulting in the same thing.
>> >
>>> We're trying to warn the user who is unaware of a prior
>>> 'set-criteria' that is about to be overwritten.
>>
>> 'set-criteria' was intended to replace a person having to do --
>> export-manifest, edit the file, add-manifest -- so my view of it
>> is identical to having edited a file per se.
>>
>>> If the two sets of criteria are different only because the the
>>> combined manifest was edited, then the criteria change is explicitly
>>> intended and we don't have to be concerned about accidentally
>>> overriding a set-criteria. Warning the user that they edited a file
>>> is irritating.
>>
>> Are you worried about collisions here? i.e. someone does an
>> export-manifest, edits the file, then tries the re-add the manifest,
>> but someone else has already changed the criteria via 'set-criteria'?
> We have different scenarios in mind. You're assuming that a user will
> export a manifest, edit, and re-import. I'm assuming that the user keeps
> their original manifests, edits as needed, and re-imports.
A benefit of keeping the manifests internally is so that users
don't have to keep track of and organize their manifests elsewhere.
> Given your
> scenario there is no reason to flag that a set-criteria was done or to
> warn the user when the criteria portions don't match because they are
> always working with the most recently imported version of the manifest.
> I can support your scenario, but we should explicitly suggest that mode
> of operation in the documentation.
We'll be sure to document this on 'how to update a published manifest'.
>>
>>>>
>>>>>> ...
>>>>>>
>>>>>>
>>>>>> For all of the installadm subcommands, the main operand shouldn't
>>>>>> need an option identifier. For example,
>>>>>>
>>>>>> installadm list -n <svcname>
>>>>>>
>>>>>> should be
>>>>>>
>>>>>> installadm list <svcname>
>>>>> Since all installadm subcommands, except delete-client, help, and
>>>>> version, require svcname I suggest that it be made an operand for
>>>>> all commands and all other arguments be options.
>>>>
>>>> The new [set|get]-criteria subcommands we're proposing
>>>> don't follow this convention. The svcname is specified as an
>>>> option in those cases.
>>> I was suggesting that those be changed too:
>>> installadm set-criteria -m <manifest_name> -p name=value svcname
>>>
>>> installadm get-criteria -m <manifest_name> -p [name] svcname
>>>
>>> where -p can be repeated for multiple properties
>>
>> This is fine by me, but we run into the -m inconsistency with
>> add-manifest again (I should have brought this up earlier).
>> With add-manifest, -m specifies the file name to publish as
>> the manifest, whereas these other commands including remove-manifest,
>> use -m to specify the manifest name which is different from
>> the file, see bug 4322.
>>
>> We can change add-manifest to be -f instead of -m since its a file.
> The add-manifest would need both -f filename and -m manifest name, right?
No, the name of the manifest is specified in the manifest file.
>>
>> ...
>>
>>>>> "Installadm help subcommand" would not be affected. "Delete-client
>>>>> mac_addr" would be changed to "delete-client -e mac_addr" to be
>>>>> consistent with "create-client -e mac_addr ..." and the use of
>>>>> svcname as the only command operand.
>>>>
>>>> Shouldn't the concept of the "command operand" depend on the
>>>> subcommand? For the case of create-client, the service is more
>>>> like a supporting option, and the client is the main operand, so I
>>>> was thinking create-client to become
>>>>
>>>> create-client ... [-t <imagepath>] -n <svcname> <client_ID>
>> >
>>> You could do that, but the syntax is easier to remember when the
>>> operand is the same across subcommands, and virtually all commands,
>>> including create-client require <svcname>.
>>
>> Not all *require* <svcname>. list and create-service use it as
>> an optional argument. (Notice the square brackets in the usage).
> OK, but I'm still concerned that the commands be easy to remember. A
> user shouldn't have to remember whether <svcname> requires -n in one
> command, but not in another.
>
> One alternative is that there are no operands, only options. But
> "installadm start -n <svcname>" seems a little overkill. Still, it would
> be acceptable.
>
> Another alternative would be: if a subcommand has only one required
> option and no optional options, e.g. start <svcname>, that option should
> be an operand. Subcommands having multiple options, whether required or
> not, have only options and no operands. A slightly more complex rule to
> learn, but not too likely to err.
>
> I feel either is acceptable.
I like the second alternative. But optional option flags should be
okay right? e.g.
installadm list
installadm list serviceFoo
installadm list -m
installadm list -m serviceFoo
>>
>>
>>> Also, I don't quite understand why -t is required since each service
>>> has only one <imagepath>, right?
>>
>> Its not required. Square brackets means its an optional argument.
> Is it changing? $ installadm create-client shows -t as required.
yes. there should be a bug filed on this. if not, I'll file one
shortly.
thanks,
-ethan