US10963236B2 - Creation of software images of software applications for image-based maintenance of the software applications - Google Patents
Creation of software images of software applications for image-based maintenance of the software applications Download PDFInfo
- Publication number
- US10963236B2 US10963236B2 US16/662,597 US201916662597A US10963236B2 US 10963236 B2 US10963236 B2 US 10963236B2 US 201916662597 A US201916662597 A US 201916662597A US 10963236 B2 US10963236 B2 US 10963236B2
- Authority
- US
- United States
- Prior art keywords
- software application
- software
- installation
- computing machine
- changes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Definitions
- the present invention relates generally to the information technology field and more specifically, to software images of software applications.
- Software images each software image encapsulating files residing on a computing machine, may be used to facilitate software deployment operations.
- software images allow deploying virtual (computing) machines, each virtual machine emulating a physical (computing) machine by software, in an effective way.
- each virtual machine may be deployed by being created and booted from a corresponding software image that stores the virtual machine's operating system and one or more soft applications already installed on the virtual machine.
- the virtual machines may be combined into virtual appliances, each virtual appliance comprising the definition of one or more virtual machines with their software images
- the virtual appliance is encapsulated in a self-contained package which may be deployed as a unit and is especially advantageous in cloud computing environments, wherein computing resources offered as services are made available on-demand.
- the software applications of the virtual machines are typically subject to maintenance operations during the life cycle of the software applications. Modifications may be applied to the software applications from time to time, for example, to correct bugs or to improve operation of the software applications.
- maintenance of the software applications is generally managed with a traditional approach (for example, the maintenance is managed with each software application that comprises an embedded updating tool, which is invoked periodically when the software application is launched for downloading any modification thereof that is available online and then applying the software application).
- Embodiments of the present invention provide a method, and associated computing system and computer program product, for creating a software image of a software application.
- One or more processors of a computing system install the software application on a computing machine.
- the one or more processors detect one or more changes of the computing machine resulting from the installation of the software application, said one or more changes comprising one or more artifacts being added to the computing machine and one or more updates being applied to the computing machine.
- the one or more processors determine one or more activation procedures and activation information according to the updates, said activation procedures being configured to apply the updates when running the activation procedures according to the activation information.
- the one or more processors create the software image by copying the artifacts from the computing machine to a virtual disk and by adding the activation procedures and the activation information obtained from the activation procedures to the virtual disk.
- FIG. 1 shows a schematic block-diagram of a computing system in which embodiments of the present invention may be practiced.
- FIGS. 2A-2C show general principles according to embodiments of the present invention.
- FIG. 3 shows software components that may be used to implement embodiments of the present invention.
- FIGS. 4A-4B shows flow diagrams describing the flow of activities relating to implementation of embodiments of the present invention.
- FIG. 1 shows a schematic block-diagram of a computing system 100 in which embodiments of the present invention may be practiced.
- the present invention improves a computer or a computing system by creating a software image of a software application for enabling image-based maintenance of the software application in the computer or computer system.
- the present invention improves the technology of maintenance of software applications in a computer or computer system.
- the computing system 100 is a server farm, which comprises several server computing machines, or simply servers 105 (for example, of the rack or blade type) and storage disks 110 (for example, of the RAID type) implementing mass-memories thereof.
- the server farm 100 also comprises a console 115 for controlling the storage disks 110 (for example, a personal computer, also provided with a drive for reading/writing removable storage units 120 , such as optical disks like DVDs).
- a switch/router sub-system 125 manages communications among the servers 105 , the disks 110 and the console 115 .
- the switch/router sub-system 125 also manages communications with a network, not shown in FIG. 1 (for example, the Internet or a LAN).
- the servers 105 , the disks 110 and the console 115 are connected to the switch/router sub-system 125 through a cabling sub-system 130 .
- the server farm 100 may implement a cloud node of a cloud computing environment, wherein (virtual) cloud resources are made available on-demand as cloud services according to different service models, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software As a Service (SAS) or Network as a service (NaaS), and/or according to different deployment models, such as public cloud, private cloud, community cloud or hybrid cloud.
- IaaS Infrastructure as a Service
- PaaS Platform as a Service
- SAS Software As a Service
- NaaS Network as a service
- deployment models such as public cloud, private cloud, community cloud or hybrid cloud.
- Several users may access the cloud computing environment by connecting to the cloud computing environment with corresponding client computing machines (not shown in the figure) through the network (i.e., the Internet in a public/community cloud or a LAN in a private cloud), so as to have the sole control of the cloud resources of the several users (which may then be used exactly as if the cloud resources were dedicated physical resources).
- the network i.e., the Internet in a public/community cloud or a LAN in a private cloud
- Each server 105 is formed by several units that are connected in parallel to a bus structure 135 .
- one or more microprocessors ( ⁇ P) 140 control operation of the server 105 .
- a RAM 145 is directly used as a working memory by the microprocessors 140
- a ROM 150 stores basic code for a bootstrap of the server 105 .
- the server 105 comprises a network adapter 155 , which is used to connect the server 105 to the cabling sub-system 130 .
- FIGS. 2A-2C show general principles according to embodiments of the present invention.
- a generic software application (which, in one embodiment, is deployed with a software image adapted to support the software application's image-based maintenance) is installed onto generic computing machine.
- the software application may be installed onto a virtual (computing) machine that is hosted on the server farm.
- the software application may be provided with a corresponding software image which is an initial copy of the software application (which in one case is not adapted to support the software application's image-based maintenance) or in another case, the software application may be installed with a standard procedure (from a corresponding installation package). In both cases, the software application may be installed ex nova or as an update of another version thereof.
- One or more changes of the virtual machine resulting from the installation of the software application may be detected (for example, by means of corresponding change sensors that correspond to the software applicative).
- the one or more changes may comprise one or more (software) artifacts that have been added to the virtual machine (for example, files encompassed by the software application) and/or one or more (software) updates of the software application that have been applied to the virtual machine (for example, configuration modifications of the software application).
- one or more activation procedures for example, scripts
- activation information for example, configuration information
- the activation procedures are adapted to apply the preceding changes when run according to the activation information (for example, to configure the operating system accordingly).
- the software image of the software application is created.
- the files encompassed by the software application that have been added to the virtual machine are copied from the virtual machine to a (new) virtual disk (for example, of self-activating type).
- the activation procedures and the activation information are added to the same virtual disk (for example, in corresponding metadata), so as to be separated from each other (for example, in different files).
- the obtained software image is ready to support the image-based maintenance of the software application (as described in detail infra).
- the above-described solution allows creating software images that are adapted to support the image-based maintenance of the software application in a substantial automatic way (with no, or at least reduced, manual intervention), which significantly decreases the time required to perform the corresponding operations and the possibility of any errors. Moreover, the obtained results of the image-based maintenance of the software application may be effectively reused for other software applications (for example, sharing a same middleware).
- FIG. 3 shows software components that may be used to implement embodiments of the present invention.
- each program may be a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logical function.
- a hypervisor 305 directly runs on a hardware structure of a generic server; the hypervisor 305 emulates a dedicated virtual hardware structure for a plurality of virtual machines.
- the virtual machines comprise one or more preparation (virtual) machines 310 for preparing the required software images and a management (virtual) machine 315 for managing the preparation machines 310 .
- Each preparation machine 310 and the management machine 315 comprise an operating system 320 and 325 , respectively (directly running on a virtual hardware structure of each preparation machine 310 or the management machine 315 , respectively, to define a software platform for the running of other software programs).
- the hypervisor 305 facilitate communication and interaction between and among the management machine 315 and the preparation machines 310 .
- a creation tool 330 manages the creation of the software images.
- the creation tool 330 accesses (in read mode) an application repository 335 .
- the application repository 335 stores its software image (non-adapted to support the image-based maintenance) or its (standard) installation package.
- the creation tool 330 accesses (in read mode) a sensor repository 340 which stores change sensors adapted to detect the changes of the preparation machines 310 (resulting from the installation of the software applications).
- Each change sensor stored in sensor repository 340 is capable of detecting a type of change of the preparation machines 310 (for example, one or more changes to a file system of the preparation machines 310 , one or more changes to databases of the preparation machine 310 , one or more changes to operating system services of the preparation machines 310 ).
- the creation tool 330 accesses (in read mode) a product library 345 .
- the product library 345 stores an indication of one or more software products that are within the software application, and for each software product that may be within the software applications to be deployed, the product library 345 stores an indication of one or more of the change sensors to be used to detect the changes of the preparation machines 310 resulting from each software product's installation.
- the creation tool 330 accesses (in read mode) a procedure library 350 .
- the procedure library 350 stores one or more predefined (customization) procedures (if any) to be applied to the software product in order to adapt the software product to support the image-based maintenance.
- the creation tool 330 controls (in write mode) an image repository 355 , which stores the software images (supporting the image-based maintenance) of the software applications to be deployed.
- Each preparation machine 310 runs the change sensors 360 that are required to detect the changes of the preparation machines 310 resulting from the installation of each software application 365 .
- the preparation machine 310 may also comprise an installation engine (not shown in the figure), which is used to control the installation of the software applications from installation packages configured to install the software packages.
- the creation tool 330 interacts with the preparation machines 310 by commands supported by an interface of the hypervisor 305 . These commands may be used to perform operations either on the preparation machines (for example, starting and stopping the preparation machines) or on the operating system 320 used by the preparation machines (for example, performing activities, starting/stopping software programs, submitting queries, copying files).
- FIGS. 4A-4B shows flow diagrams describing the flow of activities relating to implementation of embodiments of the present invention.
- each change sensor stored in sensor repository 340 in the management machine 315 and each change sensor 360 stored in the preparation machines 310 , is configured to detect the changes of the preparation machines 310 resulting from the installation of the software applications.
- each reference to “change sensor” in the description in a of FIGS. 4A-4B applies to the change sensors stored in sensor repository 340 in the management machine 315 and/or the sensors 360 stored in the preparation machines 310 .
- either, both, or a combination of the change sensors stored in sensor repository 340 in the management machine 315 and/or the sensors 360 stored in the preparation machines 310 may be used interchangeably to implement the method described in the flow diagrams of FIGS. 4A-4B .
- each block may correspond to one or more executable instructions for implementing the specified logical function on the relevant computing machines.
- the process begins at the black start circle 403 in the swim-lane of the management machine and then passes to block 406 as soon as the creation of a software image (supporting the image-based maintenance) of the software application is required (for example, by submitting a corresponding command to the creation tool).
- the creation tool determines the software products of the software application and then the corresponding change sensors (from the product library).
- the creation tool enables these change sensors in a specific preparation machine (after installing the change sensors if the change sensors were not already enabled).
- each change sensor based on a notification mechanism registers a callback function to the operating system 320 of the preparation machine (for notifying the same change sensor of any type of change).
- each change sensor based on a collection mechanism takes a corresponding (first) snapshot of the preparation machine; for this purpose, the change sensor collects information relating to the type of changes, which information defines a corresponding (first) status of the preparation machine before the installation of the software application.
- the software application is installed onto the preparation machine (block 421 ); the software application may be installed either automatically by the creation tool or manually by an operator.
- any (notification-based) change sensor is notified of any type of change as soon as the type of change occurs and then the change sensor saves an indication of the type of change at block 424 in the swim-lane of the preparation machine. For example, when a configuration parameter is changed, the operating system invokes the callback function of the corresponding change sensor by passing the name and new value of the configuration parameter.
- each (notification-based) change sensor at block 427 cancels the corresponding callback function to the operating system of the preparation machine (for stopping the notification to the change sensor of the type of changes).
- Each (collection-based) change sensor at block 430 takes a corresponding (second) snapshot of the preparation machine; as above, the change sensor collects information relating to the type of changes, which information defines a corresponding (second) status of the preparation machine after the installation of the software application.
- the creation tool prepares a virtual disk, being empty at the beginning in step 403 , and attaches (mounts) the virtual disk to the management machine.
- the creation tool then initializes the virtual disk by adding metadata of the software application (for example, in one or more XML files) to be used for the software application's image-based maintenance.
- the metadata comprise an application identifier that identifies the software application (for example, by the software application's vendor and name) and a level identifier that identifies a level of the software application (for example, the software application's version, release and service pack)
- the metadata may comprise a stop command and a start command for starting and stopping, respectively, the software application (if required for the software application's image-based maintenance).
- the creation tool then performs a loop for processing the changes of the preparation machine (resulting from the installation of the software application) as detected by the change sensors.
- the loop begins at block 436 , wherein a (current) change sensor is taken into account (starting from a first change sensor in any arbitrary order).
- the creation tools queries the change sensor for the type of changes that have been detected by change sensor (during the installation of the software application).
- the change sensor determines the corresponding changes at block 442 .
- the changes are directly defined by the corresponding notifications that have been received by it during the installation of the software application.
- the change sensor is collection-based, the changes are obtained by a differencing operation between the snapshot taken after the installation of the software application and the snapshot taken before the installation of the software application (for example, added/modified/deleted artifacts such as files). In both cases, the change sensor returns an indication of the changes to the creation tool and then stops.
- the flow of activity passes to block 445 as soon as the indication of the changes has been received from the change sensor.
- the creation tool verifies whether the changes comprise the addition of files (or other artifacts) to the preparation machine. If so, the creation tool at block 448 copies theses files from the preparation machine to the virtual disk.
- the files are organized in a hierarchal structure in the preparation machine (i.e., the file system of its operating system). Particularly, the file system defines a tree with corresponding nodes (representing directories or files), starting from a root node (for a virtual disk of the preparation machine) down to leaf nodes (for either empty sub-directories or files).
- the creation tool verifies whether the changes comprise the application of updates to the preparation machine. If so, the creation tool at block 454 determines one or more activation commands for applying these updates (i.e., changes). For example, the activation commands may be adapted to modify configurations (such as used port numbers, accessed host names/IP addresses) and/or to migrate data (such as database schema). Continuing to block 457 , the creation tool determines one or more activation parameters for applying the same updates. For example, the activation parameters may define configuration values (such as port numbers, host names/IP addresses) and/or data formats (such schema versions).
- each update that has been applied to the preparation machine generally comprises the modification of one or more artifacts thereof (for example, registries, databases), which are identified by corresponding artifact (unique) identifiers in the preparation machine (for example, a full path of files in the file system of the preparation machine, starting from the root until reaching the files through any interposed sub-directories).
- the update involves the modification to corresponding new values of one or more elements of these artifacts (for example, registry keys, database definitions), which are identified by corresponding local (unique) identifiers in the artifacts (for example, key names, schema names).
- the activation parameters are then defined by the local identifiers of the elements, in association with the new values of the activation parameters when independent of the preparation machine (for example, database schemas) or null values otherwise (for example, port numbers, host names/IP addresses).
- the activation commands are instead defined by commands for modifying the elements to the corresponding new values (indicated in the activation parameters) the artifacts.
- the artifacts are identified in the activation commands by replacing the artifact identifiers with corresponding generalized identifiers.
- each artifact identifier is split into an absolute component depending on the preparation machine and a relative component depending on the absolute component (for example, the path of the subtree and the path within the subtree, respectively, of the files that have been added to the preparation machine).
- the global component is then replaced with a corresponding variable. In this way, the activation commands are made independent of the preparation machine.
- the creation tool adds the activation commands to one or more activation procedures (for example, scripts) in the metadata of the virtual disk (empty at the beginning).
- the activation procedures comprise one or more configuration procedures for modifying the configurations and one or more migration procedures for migrating the data.
- the creation tool adds the activation parameters to activation information (for example, in form of key-value pairs) in the metadata of the virtual disk.
- the activation information comprises configuration information for the configuration procedures and migration information for the migrating procedures.
- the activation information is stored so as to be separated from the activation procedures, which means that the activation information may be used independently of the corresponding activation procedures, as required by the image-based maintenance (as described next).
- the process then continues to block 463 ; the same point is also ached directly from the block 451 if the changes do not comprise the application of any updates to the preparation machines.
- the creation tool verifies whether a last change sensor has been processed. If not, the process returns to the block 436 to repeat the same operations on a next change sensor. Conversely (once all the change sensors have been processed), the loop is exited by descending into block 466 .
- the creation tool now verifies whether any predefined procedures are available in the procedure library for each software product of the software application. If so, the creation tool at block 469 copies these predefined procedures from the procedure repository to the virtual disk (by adding them to its metadata).
- the predefined procedures may comprise an installation procedure that is used for installing the software application (the first time) and a removal procedure for removing the software application (by undoing its installation). The process then continues to block 472 ; the same point is also ached directly from the block 466 if no predefined procedure is available.
- the creation tool generates a disk (unique) identifier of the virtual disk.
- the disk identifier is calculated by a UUID generator according to one or more attributes of the virtual disk (such as the virtual disk's name, size) and/or of the software application (such as the software application's name and level).
- the creation tool stores the disk identifier into the virtual disk (by adding it to the virtual disk's metadata).
- the creation tool detaches (dismounts) the virtual disk from the management machine, and creates a corresponding software image (i.e., one or more files defining the whole virtual disk in a suitable format, for example, VMDK); the creation tool adds this software image to the image repository. The process then ends at block 481 .
- the software images so obtained may be used to maintain the corresponding software applications (comprising their first installation) on any virtual machine.
- the virtual machine comprises (system) virtual disk, or, for its operating system, a (program) virtual disk, or more, for each software application that is installed thereon (created as described above) and a (data) virtual disk, or more, for the data of each software application.
- a maintenance agent detects any new (product) virtual disk that is attached to the virtual machine, by periodically collecting the disk identifiers of the virtual disks attached to the virtual machine and searching them in a disk list storing the disk identifier, the product identifier and the level identifier of each (product) virtual disk attached to the virtual machine.
- the maintenance agent For each new virtual disk, the maintenance agent searches the application identifier extracted therefrom in the disk list. If the application identifier is not found, the new virtual disk is for the first installation of the corresponding software application, whereas on the contrary the new virtual disk is for the maintenance of a current level of the same software application, already installed in a corresponding (current) virtual disk, to a new level thereof (assuming that the level identifier of the new virtual disk is different form the level identifier of the current virtual disk). In case of maintenance, the maintenance agent executes the stop command extracted from the current virtual disk to stop the current level of the software application (if necessary).
- the maintenance agent dismounts a (local) file system of the current virtual disk from a corresponding mounting point within a (global) file system of the virtual machine, and then mounts a (local) file system of the new virtual disk to the same mounting point.
- the maintenance agent bounds each generalized identifier of the activation procedures extracted from the new virtual disk to corresponding values depending on the virtual machine (for example, the mounting point for the path to the local file system of the new virtual disk) and then runs the activation procedures.
- the maintenance agent prompts an operator to enter the values of the activation parameters indicated in the activation information of the new virtual disk that are unset (null values). In this way, the installation of the software application is customized at will.
- the maintenance agent passes the activation information extracted from the current virtual disk (with the values of all the activation parameters) to the activation procedures. In this way, the customization of the current level of the software application is preserved.
- the maintenance agent modifies the activation information in the new virtual disk accordingly.
- the maintenance agent copies the configuration information that has been used by the activation procedures, which comprises the configuration information entered by the operator in case of first installation or the configuration information of the current virtual disk (excluding what does not apply any longer) in case of maintenance, and it comprises the migration information of the new virtual disk when the virtual disk has been changed or the migration information of the current virtual disk otherwise.
- the maintenance agent copies the removal procedure (if any) from the new virtual disk to the system virtual disk.
- the maintenance agent detaches the current virtual disk from the virtual machine, updates the disk list accordingly and executes the start command extracted from the new virtual disk to re-start the software application (if necessary).
- the maintenance agent may also detect any (product) virtual disk that is detached from the virtual machine, as above by periodically collecting the disk identifiers of the virtual disks attached to the virtual machine and comparing them with the disk list. For each (old) virtual disk that is missing in the disk list, the maintenance agent runs the corresponding removal procedure stored in the system virtual disk (if any) to undo its installation. The maintenance agent then deletes this removal procedure and updates the disk list accordingly.
- the terms include, comprise, have, contain and involve (and any forms thereof) should be intended with an open, non-exhaustive meaning (i.e., not limited to the recited items), the terms based on, dependent on, according to, function of (and any forms thereof) should be intended as a non-exclusive relationship (i.e., with possible further variables involved), the term a/an should be intended as one or more items (unless expressly indicated otherwise), and the term means for (or any means-plus-function formulation) should be intended as any structure adapted or configured for carrying out the relevant function.
- an embodiment provides a method for creating a software image of a software application.
- the software image may be of any type (for example, stored in any number of files with any format, like VHD, VDI, ISO) and the software application may be of any type (for example, for end-users, system administrators, programmers).
- the method comprises installing the software application on a computing machine.
- the software application may be installed in any way (for example, with software distribution techniques) on any computing machine (for example, a physical machine).
- the method comprises deter one or more changes of the computing machine resulting from the installation of the software application.
- the changes may be detected in any way and the changes may be of any type (for example, any number of added artifacts and updates).
- the changes comprise one or more artifacts being added to the computing machine and one or more updates being applied to the computing machine.
- the added artifacts may be in any number and of any type (for example, desktop links) and the updates may be in any number and of any type (for example, registrations to remote services).
- the method comprises determining one or more activation procedures and activation information according to the updates.
- the activation procedures may be in any number and of any type (for example, command lists, executable files) and the activation information may be in any format (for example, one or more files, like of CSV type).
- the activation procedures are adapted to apply the updates when run according to the activation information.
- the activation procedures may be run according to the activation information in any way (for example, by the activation procedures that read the activation information directly) to cause any action (for example, modifying user names, modifying XML schemas, creating files/tables); moreover, the activation procedures may be of any type (for example, any configuration procedures, migration procedures or combination thereof, or additional, different or alternative procedures, like for updating external software products and the activation information may be of any type (for example, any configuration information, migration information or combination thereof, or additional, different or alternative information, like monitoring information).
- the method comprises creating the software image by copying the artifacts from the computing machine to a virtual disk and by adding the activation procedures and the activation information separated from the activation procedures to the virtual disk.
- the software image may comprise any number of virtual disks (with any format) with additional, different or alternative data (for example, without any start/stop command, any installation/removal procedure, with migration policies, installation constraints); moreover, the activation procedures and the activation information may be separated to each other in any way (either physically or logically).
- said step of detecting one or more changes comprises collecting an indication of a first status of the computing machine before installing the software application.
- the first status may be collected in any way (for example, with the computing machine that is shut down).
- said step of detecting one or more changes comprises collecting an indication of a second status of the computing machine after installing the software application.
- the second status may be collected in any way (either the same or different with respect to the first status).
- said step of detecting one or more changes comprises determining at least part of the changes according to a comparison between the second status and the first status.
- the changes may be determined in any way (for example, only considering added/removed/modified artifacts or inspecting them as well).
- said step of detecting one or more changes comprises receiving a notification of at least part of the changes in response thereto during the installation of the software application.
- the notifications may be received in any way (for example, individually in real-time or cumulatively at the end of the installation of the software application).
- said step of detecting one or more changes comprises registering one or more callback functions to an operating system of the computing machine for causing the operating system to notify the corresponding changes.
- the callback functions may be in any number and of any type (for example, notifying the creation tool directly) and they may be registered to additional, different or alternative software programs (for example, a DBMS).
- the changes may be detected in additional, different or alternative ways (for example, by hooking techniques).
- said step of detecting one or more changes comprises enabling one or more change sensors, each change sensor for a corresponding type of the changes before installing the software application.
- the sensors may be enabled in any way (for example, by installing and starting the change sensors, by simply starting the change sensors) and the change sensors may be in any number for any type of changes (for example, relating to file system, operating system, databases).
- said step of detecting one or more changes comprises querying each one of the change sensors after installing the software application for an indication of each type of change being detected by the change sensor.
- the change sensors may be queried at any time (comprising during the installation of the software application) for collecting any information (for example, only the first status and the second status of the computing machine with the corresponding changes that are determined accordingly by the creation tool).
- the software application comprises one or more software products.
- the software application may comprises any number and type of software products, down to a single one (for example, utilities, tools, libraries).
- said step of enabling one or more change sensors comprises retrieving an indication of one or more of the change sensors associated with each software product.
- the change sensors may be determined in any way (for example, in the Internet) even at the level of the whole software application directly; in any case, the possibility of always using the same change sensors (independently of the software application) is not excluded.
- said step of creating the software image comprises retrieving an indication of one or more predefined procedures associated with the software application.
- the predefined procedures may be in any number (down to none) and they may be determined in any way (for example, in the Internet), at the level of either the software products or the whole software application.
- said step of creating the software image comprises copying the predefined procedures to the virtual disk.
- the predefined procedures may be added in any way (for example, by integrating them into the activation procedures).
- the predefined procedures comprise an installation procedure for installing the software application and/or a removal procedure for removing the software application.
- the predefined procedures may be of additional, different or alternative type (for example, for applying specific customizations).
- the artifacts are stored in the computing machine at one or more nodes of a hierarchical structure; the nodes comprise one or more parent nodes depending on none of said nodes.
- the artifacts may be stored in any hierarchical structure with any number and type of nodes (for example, tables of a database).
- said step of creating the software image comprises copying the artifacts from the computing machine to a further hierarchical stricture of the virtual disk with each parent node depending on a root node of the further hierarchical structure.
- the artifacts may be copied in any way (for example, always to form a single subtree).
- At least part of the updates are applied to one or more further artifacts of the computing machine each one identified by a corresponding artifact identifier, which comprises an absolute component depending on the computing machine and a relative component depending on the absolute component.
- the further artifacts may be in any number (down to none) and of any type (for example, added or existing artifacts like files, tables) and their identifiers may be of any type, with any absolute component and relative component (for example, path and name, database and table).
- said step of determining one or more activation procedures comprises replacing the absolute component of each artifact identifier with a corresponding variable in the activation procedures.
- this operation may be performed in any way (for example, by means of wild characters).
- said step of creating the software image comprises generating a unique disk identifier of the virtual disk.
- the disk identifier may be generated in any way (for example, according to a timestamp); in any case, this operation may also be omitted at all (for example, by discriminating the virtual disks with hash values thereof).
- said step of creating the software image comprises storing the disk identifier into the virtual disk.
- the disk identifier may be stored in any way (for example, in a header of the virtual disk).
- An embodiment provides a method for maintaining a software application installed on a virtual machine.
- the method may be applied to any type of virtual machine (for example, part of a virtual appliance or stand-alone, even not in a cloud computing environment) to perform any maintenance of the software application (for example, to upgrade or to downgrade it).
- the method comprises creating a new software image of the software application according to the above-mentioned method.
- the new software image may relate to any new level of the software application (for example, a different version, release, service pack).
- the method comprises removing a current software image of the software application from the virtual machine.
- the current software image may have been created in any way (for example, in the same way as the new software image or in any other way, even manually).
- the method comprises adding the new software image to the virtual machine.
- the new software image may be added in any way (for example, either before or after removing the current software image, by verifying the availability of the new software image in the Internet periodically).
- the method comprises running the activation procedures of the new software image according to activation information of the current software image.
- the running of the activation procedures may involve additional, different or alternative operations (for example, a rebooting of the virtual machine).
- An embodiment provides a computer program configured for causing a computing system to perform each one of the above-mentioned methods when the computer program is executed on the computing system.
- An embodiment provides a computer program product, the computer program product comprising a computer readable storage hardware medium or hardware device having program instructions embodied therewith, the program instructions executable by a computing system to cause the computing system to perform each one of the same methods.
- the software program may be implemented as a stand-alone module, as a plug-in for a pre-existing software program (for example, in a software distribution application), or even directly in the latter; moreover, it is also possible to deploy the same solution as a service that is accessed through a network (such as in the Internet).
- the present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration
- the computer program product may include a computer readable storage medium media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
- RAM random access memory
- ROM read-only memory
- EPROM or Flash memory erasable programmable read-only memory
- SRAM static random access memory
- CD-ROM compact disc read-only memory
- DVD digital versatile disk
- memory stick a floppy disk
- a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
- a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
- a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- the compute readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the blocks may occur out of the order noted in the Figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
- a computer program product of the present invention comprises one or more computer readable hardware storage devices having computer readable program code stored therein, said program code executable by one or more processors to implement the methods of the present invention.
- a computer system of the present invention comprises one or more processors, one or more memories, and one or more computer readable hardware storage devices, said one or more hardware storage device containing program code executable by the one or more processors via the one or more memories to implement the methods of the present invention.
- An embodiment provides a system comprising means configured for performing the steps of each one of the above-mentioned methods.
- An embodiment provides a system comprising a circuitry (i.e., any hardware suitably configured, for example, by software) for performing each step of the same methods.
- the system may be of any type (for example, of physical or virtual type, with a stand-alone or a distributed architecture).
- any interaction between different components generally does not need to be continuous, and it may be either direct or indirect through one or more intermediaries.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/662,597 US10963236B2 (en) | 2017-01-30 | 2019-10-24 | Creation of software images of software applications for image-based maintenance of the software applications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/419,382 US10528336B2 (en) | 2017-01-30 | 2017-01-30 | Creation of software images of software applications for image-based maintenance of the software applications |
US16/662,597 US10963236B2 (en) | 2017-01-30 | 2019-10-24 | Creation of software images of software applications for image-based maintenance of the software applications |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/419,382 Continuation US10528336B2 (en) | 2017-01-30 | 2017-01-30 | Creation of software images of software applications for image-based maintenance of the software applications |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200057621A1 US20200057621A1 (en) | 2020-02-20 |
US10963236B2 true US10963236B2 (en) | 2021-03-30 |
Family
ID=62979922
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/419,382 Active 2037-06-29 US10528336B2 (en) | 2017-01-30 | 2017-01-30 | Creation of software images of software applications for image-based maintenance of the software applications |
US16/662,597 Active US10963236B2 (en) | 2017-01-30 | 2019-10-24 | Creation of software images of software applications for image-based maintenance of the software applications |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/419,382 Active 2037-06-29 US10528336B2 (en) | 2017-01-30 | 2017-01-30 | Creation of software images of software applications for image-based maintenance of the software applications |
Country Status (1)
Country | Link |
---|---|
US (2) | US10528336B2 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6969077B2 (en) * | 2016-08-23 | 2021-11-24 | 日本電気株式会社 | Virtual machine control device and its control method, and management device and its control method |
US10474446B2 (en) * | 2016-09-16 | 2019-11-12 | Bank Of America Corporation | Installation tool for adhering to enterprise requirements |
US10528336B2 (en) | 2017-01-30 | 2020-01-07 | International Business Machines Corporation | Creation of software images of software applications for image-based maintenance of the software applications |
US11539748B2 (en) | 2018-01-23 | 2022-12-27 | Zeronorth, Inc. | Monitoring and reporting enterprise level cybersecurity remediation |
US11121872B2 (en) * | 2018-01-23 | 2021-09-14 | Zeronorth, Inc. | Trusted verification of cybersecurity remediation |
CN110413378A (en) * | 2019-07-30 | 2019-11-05 | 上海金融期货信息技术有限公司 | Computing resource creation method and system under a kind of cloud computing |
CN112540921B (en) * | 2020-09-29 | 2023-11-17 | 统信软件技术有限公司 | Detection method of application software and computing device |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050131578A1 (en) | 2003-09-30 | 2005-06-16 | Intrinsic Marks International Llc | Item monitoring system and methods |
US20070168937A1 (en) | 2005-11-28 | 2007-07-19 | Soummya Mallick | Apparatus and method of application virtualization |
US20070233879A1 (en) | 2005-10-07 | 2007-10-04 | Steven Woods | System and method for advertisement identification, selection, and distribution involving a peer-to-peer network |
US20070294676A1 (en) | 2006-06-19 | 2007-12-20 | Ewan Ellis Mellor | Open virtual appliance |
US7856439B2 (en) | 2008-02-29 | 2010-12-21 | International Business Machines Corporation | Method and system for using semantic information to improve virtual machine image management |
US8069413B2 (en) | 2003-02-28 | 2011-11-29 | Bea Systems, Inc. | Systems for providing extensible help |
US20120036552A1 (en) | 2008-12-19 | 2012-02-09 | Openpeak Inc. | System for managing devices and method of operation of same |
US20120216181A1 (en) | 2010-08-27 | 2012-08-23 | International Business Machines Corporation | Automatic upgrade of virtual appliances |
US20120232463A1 (en) | 2005-02-18 | 2012-09-13 | Han-Je Kim | De novo synthesis of bacteriochlorins |
US8365164B1 (en) | 2008-02-21 | 2013-01-29 | T-APP Ltd. | Portable software applications |
US20130055228A1 (en) | 2011-08-29 | 2013-02-28 | Fujitsu Limited | System and Method for Installing a Patch on a Computing System |
US20130132942A1 (en) | 2011-11-22 | 2013-05-23 | Huawei Technologies Co., Ltd. | Application software installation method and application software installation apparatus |
US8904081B1 (en) | 2012-05-08 | 2014-12-02 | Vmware, Inc. | Composing a virtual disk using application delta disk images |
US20150081910A1 (en) | 2013-09-19 | 2015-03-19 | International Business Machines Corporation | System, method and program product for updating virtual machine images |
US20150220324A1 (en) | 2014-02-03 | 2015-08-06 | International Business Machines Corporation | Updating software products on virtual machines with software images of new levels |
US9110757B2 (en) | 2013-01-14 | 2015-08-18 | Vmware, Inc. | Techniques for performing virtual machine software upgrades using virtual disk swapping |
US20160321043A1 (en) | 2013-12-31 | 2016-11-03 | Thales Nederland B.V. | A process integration method and system |
US9990190B1 (en) | 2016-04-29 | 2018-06-05 | EMC IP Holding Company LLC | Secured virtual storage appliance installation image |
US9996374B2 (en) | 2015-06-16 | 2018-06-12 | Assured Information Security, Inc. | Deployment and installation of updates in a virtual environment |
US20180217827A1 (en) | 2017-01-30 | 2018-08-02 | International Business Machines Corporation | Creation of software images of software applications for image-based maintenance of the software applications |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9170798B2 (en) * | 2012-03-02 | 2015-10-27 | Vmware, Inc. | System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure |
-
2017
- 2017-01-30 US US15/419,382 patent/US10528336B2/en active Active
-
2019
- 2019-10-24 US US16/662,597 patent/US10963236B2/en active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8069413B2 (en) | 2003-02-28 | 2011-11-29 | Bea Systems, Inc. | Systems for providing extensible help |
US20050131578A1 (en) | 2003-09-30 | 2005-06-16 | Intrinsic Marks International Llc | Item monitoring system and methods |
US20120232463A1 (en) | 2005-02-18 | 2012-09-13 | Han-Je Kim | De novo synthesis of bacteriochlorins |
US20070233879A1 (en) | 2005-10-07 | 2007-10-04 | Steven Woods | System and method for advertisement identification, selection, and distribution involving a peer-to-peer network |
US20070168937A1 (en) | 2005-11-28 | 2007-07-19 | Soummya Mallick | Apparatus and method of application virtualization |
US20070294676A1 (en) | 2006-06-19 | 2007-12-20 | Ewan Ellis Mellor | Open virtual appliance |
US8365164B1 (en) | 2008-02-21 | 2013-01-29 | T-APP Ltd. | Portable software applications |
US7856439B2 (en) | 2008-02-29 | 2010-12-21 | International Business Machines Corporation | Method and system for using semantic information to improve virtual machine image management |
US20120036552A1 (en) | 2008-12-19 | 2012-02-09 | Openpeak Inc. | System for managing devices and method of operation of same |
US9134991B2 (en) | 2010-08-27 | 2015-09-15 | International Business Machines Corporation | Automatic upgrade of virtual appliances |
US20120216181A1 (en) | 2010-08-27 | 2012-08-23 | International Business Machines Corporation | Automatic upgrade of virtual appliances |
US20130055228A1 (en) | 2011-08-29 | 2013-02-28 | Fujitsu Limited | System and Method for Installing a Patch on a Computing System |
US20130132942A1 (en) | 2011-11-22 | 2013-05-23 | Huawei Technologies Co., Ltd. | Application software installation method and application software installation apparatus |
US8904081B1 (en) | 2012-05-08 | 2014-12-02 | Vmware, Inc. | Composing a virtual disk using application delta disk images |
US9110757B2 (en) | 2013-01-14 | 2015-08-18 | Vmware, Inc. | Techniques for performing virtual machine software upgrades using virtual disk swapping |
US20150081910A1 (en) | 2013-09-19 | 2015-03-19 | International Business Machines Corporation | System, method and program product for updating virtual machine images |
US20160321043A1 (en) | 2013-12-31 | 2016-11-03 | Thales Nederland B.V. | A process integration method and system |
US20150220324A1 (en) | 2014-02-03 | 2015-08-06 | International Business Machines Corporation | Updating software products on virtual machines with software images of new levels |
US9996374B2 (en) | 2015-06-16 | 2018-06-12 | Assured Information Security, Inc. | Deployment and installation of updates in a virtual environment |
US9990190B1 (en) | 2016-04-29 | 2018-06-05 | EMC IP Holding Company LLC | Secured virtual storage appliance installation image |
US20180217827A1 (en) | 2017-01-30 | 2018-08-02 | International Business Machines Corporation | Creation of software images of software applications for image-based maintenance of the software applications |
Non-Patent Citations (11)
Title |
---|
Advisory action (dated Mar. 26, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Amendment (dated Aug. 5, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Amendment (dated Nov. 26, 2018) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Diaz et al., Abstract Image Management and Universal Image Registration for Cloud and HPC Infrastructures, 2012 IEEE Fifth International Conference on Cloud Computing, 978-0-7695-4755-8/12 $26.00 © 2012 IEEE DOI 10.1109/CLOUD.2012.94, pp. 463-470. |
Final amendment (dated Mar. 11, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Final Office Action (dated Jan. 11, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Kecskemeti et al., Towards Efficient Virtual Appliance Delivery with Minimal Manageable Virtual Appliances, IEEE Transactions on Services Computing, vol. 7, No. 2, Apr.-Jun. 2014, pp. 279-292. |
Notice of Allowance (dated Aug. 30, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Office Action (dated Aug. 27, 2018) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Office Action (dated May 3, 2019) for U.S. Appl. No. 15/419,382, filed 1130/2017. |
RCE (Apr. 11, 2019) for U.S. Appl. No. 15/419,382, filed Jan. 30, 2017. |
Also Published As
Publication number | Publication date |
---|---|
US20180217827A1 (en) | 2018-08-02 |
US20200057621A1 (en) | 2020-02-20 |
US10528336B2 (en) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963236B2 (en) | Creation of software images of software applications for image-based maintenance of the software applications | |
US9910656B2 (en) | Updating software products on virtual machines with software images of new levels | |
US9471365B2 (en) | Techniques for performing virtual machine software upgrades using virtual disk swapping | |
US9841966B2 (en) | Selective migration of virtualized applications | |
US9940330B2 (en) | System and method for converting a physical disk to a virtual disk | |
US9075536B1 (en) | Enhanced software application platform | |
US8365164B1 (en) | Portable software applications | |
US8219592B2 (en) | Method and system for using overlay manifests to encode differences between virtual machine images | |
JP6329547B2 (en) | System and method for providing a service management engine for use in a cloud computing environment | |
US8832691B2 (en) | Compliance-based adaptations in managed virtual systems | |
US9015703B2 (en) | Enforcement of compliance policies in managed virtual systems | |
US9038062B2 (en) | Registering and accessing virtual systems for use in a managed system | |
US11520919B2 (en) | Sharing of data among containers running on virtualized operating systems | |
US20090222461A1 (en) | Method and system for separating file system metadata from other metadata in virtual machine image format | |
WO2020029995A1 (en) | Application upgrading through sharing dependencies | |
US9747091B1 (en) | Isolated software installation | |
US10613846B2 (en) | Binary restoration in a container orchestration system | |
CN114756290A (en) | Operating system installation method, device and readable storage medium | |
Sinclair et al. | Linux to Solaris Administrators Guide | |
Bach et al. | Patching Exadata |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ARCESE, MAURO;CIANO, GIUSEPPE;PICHETTI, LUIGI;SIGNING DATES FROM 20161020 TO 20161021;REEL/FRAME:050816/0639 Owner name: IBM ITALIA S.P.A., ITALY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MARINELLI, CLAUDIO;REEL/FRAME:050816/0748 Effective date: 19911014 Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:IBM ITALIA S.P.A.;REEL/FRAME:050816/0838 Effective date: 20160615 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: EDISON VAULT, LLC, DELAWARE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:057059/0956 Effective date: 20210722 |
|
AS | Assignment |
Owner name: OWL ROCK CORE INCOME CORP., AS COLLATERAL AGENT, NEW YORK Free format text: SECURITY INTEREST;ASSIGNORS:AVALARA, INC.;EDISON VAULT, LLC;REEL/FRAME:061728/0201 Effective date: 20221019 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |