home *** CD-ROM | disk | FTP | other *** search
-
- Sample: container browser
- =========================
-
- This program implements a browser for SMS objects, it illustrates
- possible uses of the following SMS APIs:
- SmsEnumContainers
- SmsEnumFilters
- SmsDataSourceConnect
- SmsDataSourceDisconnect
- SmsOpenContainer
- SmsPopulate
- SmsCloseContainer
- SmsGetNextFolder
- SmsCloseFolder
- SmsRewind
- SmsGetFolderID
- SmsGetFolderType
- SmsGetScalarCount
- SmsGetFolderCount
- SmsEnumFolderTypes
- SmsGetNextScalar
- SmsCreateFilter
- SmsAddToken
- SmsGetAllFilters.
- SmsGetFilterType
- SmsGetToken
- SmsGetTokenCount
- SmsCloseFilter
-
- Using the EnumContainers and EnumFilters APIs the program discovers
- what containers and filters have been registered with the API engine.
- The resulting strings are used to populate the containers and
- filters listboxes.
-
- After establishing a connection to the appropriate datasource, the user
- selects a container to examine. When the "Done" button, in the select
- container section of the dialogue, is pressed the "Select" and "Done"
- buttons in the Filters section are enabled. At this point the user
- should select and configure filters (explanations further down).
- Multiple filters may be selected for the container. Pressing the "Done"
- button in this section enables the "View container" button at the
- lower part of the dialogue.
-
- The "View container" button brings up the "The container" dialogue.
- This dialogue displays the container type (eg "Package container"), the
- number of folders contained in the container, and a list of these
- folders. The user then selects a folder and views it ("View folder"
- button). The "Done" button dismisses this dialogue and returns to the
- main doalogue. In this case all the user can do is terminate the
- browser, or restart by pressing the "Connect" button.
-
- Viewing folders:
- View a folder from the container display brings up a dialogue titled
- "View of folder: <the folder's name>". This dialogue has two sections,
- folder details, and a sub-folders listbox. The folder details section
- displays the folder's ID, type, count of scalars in the folder, count
- of sub-folders in the folder, and the number of sub-folder types that
- the folder can contain. Refer to the smsapi.h header file, or supplied
- help file, for the precise meaning and use of sub-folder type count.
- If there are any scalars in the folder the "View scalars" button will
- be enabled. Pressing this brings up a dialogue displaying the scalars and
- and their values.
- The sub-folder list displays the names of any sub-folders. Again, if
- there are any sub-folders the "View sub-folder" button will be enabled.
- Pressing this will cause the dialogue contents to be replaced with the
- details of the selected folder.
-
- Configuring filters:
- There are currently 8 filters available:
- site, machine, group, job, architecure, package, attribute, and
- sitelimit.
- After selecting a filter the user must configure it in order for it to
- be applied to the container, this is done in the "Configure filter"
- dialogue.
- Filters are composed of one or more tokens, the dialogue allows the
- setting of tokens into the specified filter.
- There are, currently, two forms of APIs for inserting tokens into
- filters, Add{And|Or}Token3 and Add{And|Or}Token4. The former version is
- used by all filters with the exception of Machine filters.
- If the dialogue detects that it is processing a Machine filter, then an
- additional edit control is enabled. For all other filters it is disabled.
- Machine filters need to be able to specify a group class, an attribute
- name, an operator, and a value. Other filters do not need the group
- class field.
- The usage of the three common fields differs considerably among filters,
- indeed, some filters do not even need all three parameters to be filled
- in.
-
- Site filter
- -----------
- Possible values for the name field are: RootSite, and SiteByCode.
- They inform the container what site folders it should contain.
- If no site filter is applied then the site container will contain
- one folder for each site in the datasource.
- If RootSite is specified, then no other parameters are needed, and the
- container will only contain a folder for the root site.
- If SiteByCode is specified, then the Value field must contain the three
- letter site code for the requested site. Mixing of a RootSite with
- SiteByCode tokens makes no sense. (You have asked for only the root site
- and then additional sites.) In this case the RootSite token will take
- precedence and the other tokens will be discarded.
- It is possible, and perfectly sensible, to set multiple SiteByCode
- tokens. In this case the container will be populated with one folder for
- each of the requested sites. However, in this case the tokens must be
- ORed into the filter. To say that you want the boolean product of site
- ABC and site DEF makes no sense since no site can possibly have to
- site codes.
-
-
- Group filter
- -----------
- This filter allows you to select the groupclasses that will be included
- for any machines that you wish to browse. As such it is only relevant
- for a container that includes machines within its hierarchy, eg site
- container, machine container.
- Configure this filter as follows:
-
- Name field: must say "GroupClass"
- GroupClass field: a valid groupclass name such as
- "MICROSOFT|IDENTIFICATION|1.0".
- Operator combobox: select the "is" operator. It's the only one allowed.
-
- It is possible to OR multiple tokens together. For instance, selecting
- (OR) a token for MICROSOFT|IDENTIFICATION|1.0 group, select (OR) a
- token for MICROSOFT|NETCARD|1.0 group. When viewing the parent machine
- folder there will be two sub-folders, one for each of these groups.
- Note: some groupclasses have multiple instances, eg MICROSOFT|ENVIRONMENT|1.0.
- In this case there will be as many machine group sub-folders as there
- are instances of this group.
- As in site filters, ANDing tokens together makes no sense.
-
-
- Job filter
- -----------
- Three options exist for filtering jobs: by job ID, by job type, and
- by job status. In all three cases the name and value fields are used.
- The operation field, currently, is not.
- To set tokens, enter one of the strings "JobType", "JobID", or "JobStatus"
- in the name field.
- For JobType tokens the value should be one of the following (again as
- a literal string):
- "Install" - for workstation install jobs.
- "Server" - for server share jobs.
- "Remove package" - for remove package jobs.
- "System" - for NAD transfer, site, and minijobs.
-
- For retrieving jobs by their ID, you should type "JobID" in the name
- field, and the (eight character) job name in the value field.
-
- For retrieving jobs by their status, type "JobStatus" in the name field.
- The value field should contain one of the following string values:
- "Pending"
- "Active"
- "Cancelled"
- "Complete"
- "Failed"
- "Active failed"
-
- Job tokens can be combined together inside a filter. For instance, the
- tokens: JobType = Install OR JobID = "ABC00123" will result in the
- retrieval of all workstation install jobs, and the job with the name
- "ABC00123".
-
-
- Architecture filter
- -------------------
- This uses one parameter, the value field. Additional documentation
- will describe what values are allowed. For instance, "Personal Computer"
- will result in machines of the Personal Computer architectures being
- selected. "SMSEvent" will result in SMS event MIFs being selected.
-
-
- Package filter
- --------------
- Currently, there is only one type of token for package filters, this
- is the Type token. The type field should say "PackageType". The value field
- is one of the following literal strings:
- "Workstation"
- "Server"
- "Inventory"
- These can be combined by ORing them into a filter, in which case
- you could retrieve, say, Workstation and Sharing packages.
- If no package filter is applied, then the system defaults to returning
- all packages that are in the datasource.
-
-
- Attribute filter
- ----------------
- An attribute filter acts in the same way as an SMS query format. It
- is used when enumerating/selecting machines and defines what machine
- attributes should be accepted by the container. This has a significant
- performance gain over using group filters.
- For instance, if the user only wants to see the Name, SMSLocation,
- and NetCardID from a machine's Identification group, then an
- attribute filter containing tokens for each of these attributes will
- result in a much faster folder selection than specifying a group
- filter for then Identification group. Additionally, only the information
- requested will be returned.
-
- The name field should contain the groupclass (eg MICROSOFT|IDENTIFICATION|1.0).
- The value field should contain the name of the attribute (eg "Name").
- The operator is not currently used.
-
- NOTE: attribute filters specifying attributes that exist in multiple
- instance groups (eg the Environment group) will produce indeterminate
- results. They should not be used in this case.
-
-
- Machine filter
- --------------
- A machine filter is the API equivalent of an SMS query. To configure this
- type of filter you must provide the following:
-
- Architecture field: this must contain an architecture that is known to
- SMS, exam,ples are: "Personal Computer", "SMSEvent", "UserGroups".
- Consult the SMS documentation for full details about architectures.
- GroupClass field: a valid groupclass name such as
- "MICROSOFT|IDENTIFICATION|1.0".
- Attribute name field: the name of an attribute that exists within the
- specified groupclass. For example "SystemRole".
- Value: the value for the attribute.
- Operator combobox: this is a dropdown listbox that contains operators that
- define the relationship between the attribute and the value.
- For example, "SystemRole" "is" "Server". In this case "is" denotes the
- string equality operator.
-
- This filter can be applied to site, machine, and machine group containers.
-
- For more details refer to your SMS documentation on SMS queries.
-
-
- Sitelimit filter
- ----------------
- This filter can only be applied to a machine container. Using it you
- can specify that you only want machines from a specific site and,
- optionally, a specified domain to be included within the container.
- Configure this filter as follows:
-
- Site code field: the three letter site code
- [optional] Domain: the name of the domain
-
-