Webserver interface for deployment management tool
10740085 ยท 2020-08-11
Assignee
Inventors
- Jeffrey Michael Jenson (Andover, MN, US)
- Nicholas John Notto (St. Paul, MN, US)
- Dana Catherine Hazen (Minnetonka, MN, US)
- Ram Mohan Varma Nandimandalam (Maple Grove, MN, US)
- Sri Rama Sarat Chandra Nandula (Smyrna, GA, US)
- Susan Marie Woitalewicz (Osseo, MN, US)
- Kumaraguru Janakiraman Duraiswamy (Tamilnadu, IN)
Cpc classification
H04L41/0293
ELECTRICITY
H04L67/02
ELECTRICITY
H04L41/0695
ELECTRICITY
H04L41/0233
ELECTRICITY
G06F9/5077
PHYSICS
H04L67/34
ELECTRICITY
H04L41/0253
ELECTRICITY
International classification
Abstract
A computer-implemented method includes submitting a description of devices to a webserver and receiving an identifier for the devices from the webserver. Information related to an application to be deployed is submitted to the webserver and an identifier for the application is received from the webserver. A request is submitted to the webserver to deploy the application to the devices, where the request includes the identifier for the devices and the identifier for the application. The request to deploy the application is independent of which deployment management tool is used to deploy the application to the devices.
Claims
1. A computer-implemented method comprising: submitting a description of a plurality of devices to a webserver as part of a request for the creation of a collection object that represents the plurality of devices and receiving an identifier for the collection object from the webserver; a submitter submitting attributes associated with an application to be deployed to the webserver; while preventing direct access by the submitter to a deployment management tool, receiving the attributes associated with the application from the submitter; calling at least one method in the deployment management tool to create an application in the deployment management tool based on the received attributes and to obtain the identifier for the created application; returning the identifier for the created application to the submitter; the submitter receiving the identifier for the application from the webserver; and submitting a request to the webserver to deploy the application to the plurality of devices, the request including the identifier for the collection object and the identifier for the application and the request being independent of which deployment management tool is used to deploy the application to the devices.
2. The computer-implemented method of claim 1, wherein the description of the plurality of devices comprises a description of a plurality of users and the request to deploy the application comprises a request to deploy the application to at least one device used by each user described by the description of the plurality of users.
3. The computer-implemented method of claim 1, wherein the description of the plurality of devices comprises a rule for identifying devices in a network of devices.
4. The computer-implemented method of claim 1, wherein submitting attributes associated with the application to be deployed comprises submitting an install command for installing the application on a device.
5. The computer-implemented method of claim 1, wherein submitting attributes associated with the application to be deployed comprises providing a location of an installation bundle containing the application to be installed.
6. The computer-implemented method of claim 1, wherein the attributes associated with the application comprises an identification of a distribution point group that includes at least one application catalog.
7. The computer-implemented method of claim 1, further comprising submitting a description of a maintenance window to associate with the devices together with the identifier for the devices.
8. A method comprising: while preventing direct access by a submitter to a deployment management tool, receiving attributes associated with an application from the submitter; calling at least one method in the deployment management tool to create an application object in the deployment management tool based on the received attributes and to obtain an identifier for the created application object; returning the identifier for the created application object to the submitter; while preventing direct access by the submitter to the deployment management tool, receiving a request to create a deployment together with an identifier for a collection representing a plurality of devices and the identifier for the created application object from the submitter; and calling at least one method in the deployment management tool to create the deployment so that the deployment is used by the deployment management tool to deploy the application to the plurality of devices represented by the identifier for the collection.
9. The method of claim 8 further comprising: while preventing direct access by the submitter to the deployment management tool, receiving a description of devices from a submitter; calling at least one method in a deployment management tool to create the collection based on the description of devices and to obtain the identifier for the collection; and returning the identifier for the collection to the submitter.
10. The method of claim 8 further comprising: while preventing direct access by a second submitter to the deployment management tool, receiving attributes associated with a second application from a second submitter; calling at least one method in the deployment management tool to create a second application object in the deployment management tool based on the received attributes associated with the second application and to obtain an identifier for the second created application object; and returning the identifier for the second created application object to the second submitter.
11. The method of claim 10, wherein receiving the attributes associated with the second application comprises receiving an identifier for the second submitter.
12. The method of claim 11 further comprising: while preventing direct access by a third submitter to the deployment management tool, receiving a request from the third submitter to delete the second created application object together with an identifier for the third submitter; and refusing to delete the second created application object because the identifier for the third submitter does not match the identifier for the second submitter.
13. The method of claim 8, wherein the attributes associated with the application comprise an install command.
14. The method of claim 8, wherein the description of devices comprises a description of the users of the devices.
15. A webserver comprising: a memory; and a processor executing instructions to provide: an application resource having a uniform resource identifier and instructions for processing requests to create application objects in a deployment management tool; a collection resource having a second uniform resource identifier and instructions for processing requests to create collections in the deployment management tool, each collection comprising a plurality of devices; a deployment resource having a third uniform resource identifier and instructions for processing requests to create a deployment in the deployment management tool based on an application object created by referencing the application resource and a collection created by referencing the collection resource; and instructions for processing requests to delete application objects that reference the application resource wherein the instructions prevent deletion of an application object when an identifier of a submitter requesting the deletion does not match the identifier of a submitter who requested creation of the application object.
16. The webserver of claim 15, wherein the request to create a collection comprises a query for identifying a set of devices to include in the collection.
17. The webserver of claim 15, wherein the request to create a collection comprises an identifier of a group of users to include in the collection.
18. The webserver of claim 15 further comprising: a maintenance window resource having a fourth uniform resource identifier and instructions for processing requests to create a maintenance window for a collection in the deployment management tool.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
DETAILED DESCRIPTION
(11) Deployment management tools are complex programs used to deploy new applications and update patches to computing devices in an enterprise system. Such deployment management tools require users to interface with a large number of user interface screens in order to define the various parameters required for a deployment of an application or a patch. Users unfamiliar with the deployment management tool find it difficult to navigate through all the different user interface pages in order to create and schedule a deployment. In addition, users who are unfamiliar with the deployment management tool tend to introduce a large number of errors into the deployment management tool when given direct access to the tool. In particular, direct access to the deployment management tool allows users to change settings in the deployment management tool that will cause a deployment to fail.
(12) The embodiments described below improve the operation of deployment systems by reducing the number of user interfaces that a user has to navigate in order to create a deployment while also preventing the user from directly accessing the deployment management tool and thereby reducing the number of errors that a user can introduce into a deployment.
(13)
(14)
(15) The collection of resources 212 include an application resource 204, a collection resource 206, a maintenance window resource 208 and a deployment resource 210, which each have a respective uniform resource identifier (URI). In accordance with one embodiment, webserver 214 supports at least one HTTP request method for each resource URI, such as GET, POST, PUT, and DELETE, for example. Each resource corresponds to an object used by deployment management tool 102 and stored in a deployment database 230. Thus, application resource 204 corresponds to Application objects that describe applications that are to be deployed, collection resource 206 corresponds to Collection objects that describe collections of devices or users that are to receive deployed applications, maintenance window resource 208 corresponds to Maintenance Window objects that describe time periods when devices associated with a collection can receive a deployment and deployment resource 210 corresponds to Deployment objects that describe parameters of deployments. In general, if the GET method is supported for a resource, web server 214 will use deployment management tool 102 to retrieve one or more corresponding objects from deployment database 230; if the POST method is supported, web server 214 will use deployment management tool 102 to create a new corresponding object in deployment database 230; if the PUT method is supported, web server 214 will use deployment management tool 102 to change a corresponding object in deployment database 230; and if the DELETE method is supported, web server 214 will use deployment management tool 102 to remove a corresponding object from deployment database 230.
(16)
(17) POST/collection URI HTTP/1.1
(18) Content-type: application/JSON
(19) Authorization: OATH access token
(20) key: consumer key
(21) collection_name: Name of collection
(22) comment: Description of collection
(23) owned_by_this_site: True
(24) limit_to_collection_id: collection ID
(25) rule_name: name
(26) folder_id: Identifier for folder
(27) device_list: [device ID, device ID . . . ]
(28) query: query to add devices
(29) include_collection_ids: [list of collection IDs]
(30) exclude_collection_ids: [list of collection IDs]
(31) In accordance with another embodiment, the request is a Collection ReST call 250 for the creation of a collection of users that takes the form of:
(32) POST/collection URI HTTP/1.1
(33) Content-type: application/JSON
(34) Authorization: OAUTH access token
(35) key: consumer key
(36) collection_name: Name of collection
(37) comment:Description of collection
(38) owned_by_this_site: True
(39) limit_to_collection_id: collection ID
(40) rule_name: name
(41) folder_id: Identifier for folder
(42) user_group_list: Identifier of group of users
(43) include_collection_ids: [list of collection IDs]
(44) exclude_collection_ids: [list of collection IDs]
(45) The two HTTP requests described above both include a request line including an HTTP method of POST, the URI of collection resource 206, and the version of HTTP. The next three lines after the request line contain the header of the HTTP request, with each line containing an attribute:value pair. After the header, there is a blank line followed by the body of the request. The first attribute:value pair in the header indicates the format of the information in the body. In the embodiments shown above, the body has an application/JSON format, which also provides attribute:value pairs. The header also includes an authorization attribute, which provides an OAUTH access token and a key attribute, which provides a consumer key for accessing the deployment management tool.
(46) The body of the request includes a description of the collection to be created by providing a list of attribute:value pairs. In the body, the collection_name attribute is a name to assign to the newly created collection and the comment attribute is a description of the collection to be created. The limit_to_collection_id attribute limits the members of this collection to devices and users that are part of the collection identified for this attribute. The folder_id attribute provides the identifier for a location in the deployment management tool where this collection should be created. For device collections, the collection can be defined either using the device_list attribute and providing a list of device IDs or using the query attribute and providing a pattern (text and wildcards) or query for identifying devices to include in the collection. If the query attribute is used, the rule_name attribute is used to assign a rule name to the pattern or query. For user collections, the users can be identified from a user_group list attribute, which identifies a list of user groups that this collection targets. The include_collection_ids attribute provides a list of collections containing devices or users that should be included in the collection being created. The exclude_collection_ids parameter provides a list of collections containing devices or users that should be excluded from the present collection. The limit_to_collection_id, the include_collection_ids, the exclude_collection_ids, the device_list, the query, and the user_group list each provide a description of devices that are to be included in the collection with the user_group list indirectly describing the devices by providing a description of users who use the devices.
(47)
(48) At step 416, the include collection IDs are set for the collection and at step 418, the exclude collection IDs are set for the collection. At step 419, the limit to collection ID is set for the collection.
(49) If all of the operations described above succeed, the identifier for the newly created collection is returned at step 422. If one of the steps above does not succeed at step 420, an error is returned in the return message from web server 214 to client device 220/222 at step 424.
(50) Once a collection has been created, the attributes of the collection can be retrieved by sending an HTTP GET request to webserver 214 with the identifier for the collection placed at the end of the URI for collection resource 206. In response to the GET request, webserver 214 uses API methods 216 to request the attribute values of the collection from deployment management tool 102 and returns the attribute:value pairs for the collection to the requesting device. A list of collection IDs that have been created can be retrieved by sending an HTTP GET request to webserver 214 with just the URI for collection resource 206.
(51) Returning to
(52) At step 304, a description of a maintenance window to associate with the devices of the created collection is sent to the webserver. In accordance with one embodiment, the description is sent as part of maintenance window ReST call 252 executed on device 222. Maintenance window ReST call 252 is directed to maintenance window resource 208 and in accordance with one embodiment, takes the following form:
(53) POST/maintenance window URI HTTP/1.1
(54) Content-type: application/JSON
(55) Authorization: OAUTH access token
(56) key: consumer key
(57) name: name of maintenance Window
(58) collection_id: ID of collection that maintenance window is to be applied to
(59) recurrence_type: none, monthly or weekly
(60) start_time: Date/time when application can start to be deployed to collection,
(61) hour_duration: maximum length of window,
(62) day: day of week when maintenance window should open if reoccurring
(63) week: week of month when maintenance window should open if reoccurring monthly
(64) The request line includes a POST command followed by the URI of maintenance window resource 208 and the version of HTTP. The header of the request is similar to the header of the collection request discussed above. The body of the request includes a description of the maintenance window using a series of attribute:value pairs. The name attribute provides a name to assign to the maintenance window and a collection_id attribute identifies the collection ID of the collection that the maintenance window is to be applied to. The recurrence_type attribute indicates whether the maintenance window is not to recur or is to recur on a weekly or monthly basis. The start_time attribute in the body designates a date and time when an application can start to be deployed to the collection. The hour_duration parameter indicates the length of the maintenance window after the start time during which the application can be deployed. For maintenance windows that recur weekly or monthly, the day attribute designates the day of the week when the maintenance window should reopen. For maintenance windows that recur monthly, the week attribute indicates which week of the month the maintenance window should open.
(65) Thus, the maintenance window designates a period of time and one or more dates during which an application may be deployed to the devices listed in a collection of devices or devices operated by a collection of users.
(66)
(67) After requesting the creation of the maintenance window at step 304, the process of creating a deployment in
(68) POST/application URI HTTP/1.1
(69) Content-type: application/JSON
(70) Authorization: OAUTH access token
(71) key: consumer key
(72) application_name: name of Application
(73) publisher: name of publisher of application
(74) auto install: True/False
(75) software_version: version of application
(76) keywords: [List of keywords to for searching in Application Catalog/Software Center]
(77) description: short description of what the application is
(78) folder_id: identifier of folder where application is to be stored
(79) content_source: path to code registry containing application
(80) requirement_rules: [list of rules to be applied to devices]
(81) distribution_point_group_name: group of distribution points for distributing
(82) application
(83) dependent_application_ids: [List of applications that must be on device]
(84) install_command_line: <install command>
(85) uninstall_command_line:<uninstall command>
(86) detection:<script to detect>
(87) The attributes in the body of the request provide information related to the application to be deployed. The application_name, publisher, software_version, and description attributes provide the name, publisher, version of the application, and a short description of what the application is, respectively, which are to appear in any application catalog/software center that the application is to be placed in as part of the deployment. The keywords attribute provides a list of keywords that will be used to tag the application in the application catalog/software center for the purposes of retrieving the application through searches in the application catalog/software center. The auto_install attribute indicates whether the application can be installed as part of a sequence. The folder_ids attribute identifies a folder in deployment database 230 where the application is to be stored for deployment. The content_source attribute indicates the path to a code registry, such as code registries 270 and 272 of
(88)
(89) Once an application has been created, the attributes of the application can be retrieved by sending an HTTP GET request to webserver 214 with the identifier for the application placed at the end of the URI for application resource 204. In response to the GET request, webserver 214 uses API methods 216 to request the attribute values of the application from deployment management tool 102 and returns the attribute:value pairs for the application to the requesting device. A list of application IDs that have been created can be retrieved by sending an HTTP GET request to webserver 214 with just the URI for application resource 204.
(90) Using application ReST call 254, it is also possible to delete an application from deployment management tool 102. In accordance with one embodiment, such delete requests take the form of:
(91) DELETE/application URI/{APPLICATION ID} HTTP/1.1
(92) Content-type: application/JSON
(93) Authorization: OAUTH access token
(94) key: consumer key
(95) The request line includes a reference to the HTTP DELETE method and a reference to the URI of application resource 204 together with the application ID of the application to be deleted. The header contains the same information as the application POST request.
(96)
(97) Returning to the method of
(98) POST/deployment URI HTTP/1.1
(99) Content-type: application/JSON
(100) Authorization: OAUTH access token
(101) key: consumer key
(102) application_id: Identifier of Application to be deployed
(103) collection_id: Identifier of user or device collection that Application is to be deployed to
(104) offer_type_id: Required/Available
(105) desired_config_type: Install/Uninstall,
(106) start_time: Date/time to make deployment available
(107) enforcement_deadline: Date/Time by which devices must accept deployment
(108) use_gmt_times: True/False
(109) override_service_windows: True/False
(110) reboot_outside_of_service_windows: True/False
(111) require_approval: True/False
(112) notify_user: True/False
(113) wol enabled: True/False
(114) deployment_description: Description of deployment
(115) where the request includes a request line containing the POST method and a reference to the deployment URI. The request also includes a header similar to the header found in the other requests described above. The body of the request includes the application ID for the application to be deployed and the collection ID for the collection of devices or users that the application is to be deployed to. The offer_type_id attribute indicates whether the deployment is required or is simply to be made available. The desired_config_type attribute indicates whether the deployment is an install deployment or an uninstall deployment. The start_time attribute indicates the date and time that the deployment is to be made available and the enforcement_deadline attribute indicates the date and time by which devices must accept the deployment if the deployment is required. The use GMT_times attribute indicates whether the time will be based on the client time or on UTC time. The override_service_windows attribute indicates whether the application can be installed outside of a service window defined by a maintenance window for the collection or whether it can only be installed within a service window. The reboot_outside_of_service_windows attribute indicates whether the device can be rebooted outside of a maintenance window defined for the collection or whether the installation must wait for a service window before rebooting. The require_approval attribute indicates whether prior approval is required before a user can deploy the application from the application catalog. The notify_user attribute sets a user experience setting and the wol_enabled attribute sends wake up packets for a device when set to true. The deployment_description parameter provides a description of the deployment.
(116)
(117) Note that all of the ReST calls discussed above are independent of the deployment management tool that is used to implement the deployment. As a result, webserver 214 allows different deployment management tools to be used without requiring changes to the ReST calls. This simplifies the coding required for the ReST calls by allowing one set of ReST calls to be created for all deployment management tools. In addition, if a different deployment management tool is later selected, the code on every device used to request a deployment does not have to be changed. Instead, only the code on webserver 214 needs to be changed to work with the new deployment management tool. This improves deployment technology by reducing the amount of work required when the deployment tool changes.
(118) In the discussion above, the ReST calls, such as collection ReST call 250, maintenance window ReST call 252, application ReST call 254 and deployment ReST call 256 were shown to be distinct elements located within device 222. In other embodiments, these calls are integrated together to form an integrated deployment script, such as integrated deployment script 258 in device 220. Such an integrated deployment script can include each of these ReST calls in a sequence together with error management code so as to allow the entire deployment to be created while making a single call to the integrated deployment script 258.
(119) In accordance with a further embodiment, webserver 214 can be used to create a deployment for a software update while preventing direct access to deployment management tool 102.
(120) POST/deployment URI HTTP/1.1
(121) Content-type: application/JSON
(122) Authorization: OAUTH access token
(123) key: consumer key
(124) update_group_id: Identifier of Update Group
(125) collection_id: Identifier of user or device collection that Application is to be deployed to
(126) suppress_reboot: 0
(127) start_time: Date/time to make deployment available
(128) enforcement_deadline: Date/Time by which devices must accept deployment
(129) use_gmt_times: True/False
(130) override_service_windows: True/False
(131) reboot_outside_of_service_windows: True/False
(132) notify_user: True/False
(133) deployment_description: Description of deployment
(134) where the attributes that are similar to the attributes of the POST request for the deployment of an application have the same meanings. The update_group_id attribute indicates the identifier of an update group which has an associated update group storage area 290 in
(135) By providing webserver 214, the various embodiments are able to receive and satisfy requests to create application objects, collections of devices, maintenance windows and deployments in a deployment management tool while at the same preventing direct access to the deployment management tool. This reduces the number of user interface screens that the person requesting the deployment must navigate while also reducing the number of errors that the person may introduce into the deployment.
(136)
(137) Embodiments of the present invention can be applied in the context of computer systems other than computing device 10. Other appropriate computer systems include handheld devices, multi-processor systems, various consumer electronic devices, mainframe computers, and the like. Those skilled in the art will also appreciate that embodiments can also be applied within computer systems wherein tasks are performed by remote processing devices that are linked through a communications network (e.g., communication utilizing Internet or web-based software systems). For example, program modules may be located in either local or remote memory storage devices or simultaneously in both local and remote memory storage devices. Similarly, any storage of data associated with embodiments of the present invention may be accomplished utilizing either local or remote storage devices, or simultaneously utilizing both local and remote storage devices.
(138) Computing device 10 further includes an optional hard disc drive 24, an optional external memory device 28, and an optional optical disc drive 30. External memory device 28 can include an external disc drive or solid state memory that may be attached to computing device 10 through an interface such as Universal Serial Bus interface 34, which is connected to system bus 16. Optical disc drive 30 can illustratively be utilized for reading data from (or writing data to) optical media, such as a CD-ROM disc 32. Hard disc drive 24 and optical disc drive 30 are connected to the system bus 16 by a hard disc drive interface 32 and an optical disc drive interface 36, respectively. The drives and external memory devices and their associated computer-readable media provide nonvolatile storage media for the computing device 10 on which computer-executable instructions and computer-readable data structures may be stored. Other types of media that are readable by a computer may also be used in the exemplary operation environment.
(139) A number of program modules may be stored in the drives and RAM 20, including an operating system 38, one or more application programs 40, other program modules 42 and program data 44. In particular, application programs 40 can include programs for implementing any one of modules discussed above. Program data 44 may include any data used by the systems and methods discussed above.
(140) Processing unit 12, also referred to as a processor, executes programs in system memory 14 and solid state memory 25 to perform the methods described above.
(141) Input devices including a keyboard 63 and a mouse 65 are optionally connected to system bus 16 through an Input/Output interface 46 that is coupled to system bus 16. Monitor or display 48 is connected to the system bus 16 through a video adapter 50 and provides graphical images to users. Other peripheral output devices (e.g., speakers or printers) could also be included but have not been illustrated. In accordance with some embodiments, monitor 48 comprises a touch screen that both displays input and provides locations on the screen where the user is contacting the screen.
(142) The computing device 10 may operate in a network environment utilizing connections to one or more remote computers, such as a remote computer 52. The remote computer 52 may be a server, a router, a peer device, or other common network node. Remote computer 52 may include many or all of the features and elements described in relation to computing device 10, although only a memory storage device 54 has been illustrated in
(143) The computing device 10 is connected to the LAN 56 through a network interface 60. The computing device 10 is also connected to WAN 58 and includes a modem 62 for establishing communications over the WAN 58. The modem 62, which may be internal or external, is connected to the system bus 16 via the I/O interface 46.
(144) In a networked environment, program modules depicted relative to the computing device 10, or portions thereof, may be stored in the remote memory storage device 54. For example, application programs may be stored utilizing memory storage device 54. In addition, data associated with an application program may illustratively be stored within memory storage device 54. It will be appreciated that the network connections shown in
(145) Although elements have been shown or described as separate embodiments above, portions of each embodiment may be combined with all or part of other embodiments described above.
(146) Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.