ENHANCED TESTING OF EDGE GATEWAYS WITH A VIRTUAL NETWORK FUNCTION

This disclosure describes systems, methods, and devices related to remotely testing virtual network functions with edge gateways. A method may include providing an application for receiving user inputs for testing a virtual network function (VNF); receiving, via the application, a first user input associated with adding an image of a virtual machine instance to the application; downloading, via the application, the image based on the first user input; receiving, via the application, a second user input associated with instantiating a service associated with the virtual machine instance; instantiating, via the application, the service based on the second user input; receiving, via the application, a third user input associated with testing the VNF with the edge gateway device using the image and the service; and executing, via the application, a test of the VNF with an edge gateway using the image and the service based on the third user input.

TECHNICAL FIELD

Embodiments of the present invention generally relate to systems and methods for testing edge gateways with a virtual network function.

BACKGROUND

Network customers may test virtual machine functionality with edge gateways for compatibility with network edge gateways. Testing often requires the edge gateway hardware to be configured at a customer premise, and testing may require weeks or months.

SUMMARY

A method for remotely testing virtual network functions with edge gateway devices may include providing, by at least one processor, an application associated with receiving user inputs for testing a virtual network function (VNF) with an edge gateway device remote from the VNF; receiving, by the at least one processor, via the application, a first user input associated with adding an image of a virtual machine instance to the application; downloading, by the at least one processor, via the application, the image based on the first user input; receiving, by the at least one processor, via the application, a second user input associated with instantiating a service associated with the virtual machine instance; instantiating, by the at least one processor, via the application, the service based on the second user input; receiving, by the at least one processor, via the application, a third user input associated with testing the VNF with the edge gateway device using the image and the service; and executing, by the at least one processor, via the application, a test of the VNF with the edge gateway device using the image and the service based on the third user input.

A system for remotely testing virtual network functions with edge gateway devices may include memory coupled to at least one processor, the at least one processor configured to: provide an application associated with receiving user inputs for testing a virtual network function (VNF) with an edge gateway device remote from the VNF; receive, via the application, a first user input associated with adding an image of a virtual machine instance to the application; download, via the application, the image based on the first user input; receive, via the application, a second user input associated with instantiating a service associated with the virtual machine instance; instantiate, via the application, the service based on the second user input; receive, via the application, a third user input associated with testing the VNF with the edge gateway device using the image and the service; and execute, via the application, a test of the VNF with the edge gateway device using the image and the service based on the third user input.

A non-transitory computer-readable storage medium may include instructions to cause at least one processor for remotely testing virtual network functions with edge gateway devices, upon execution of the instructions by the at least one processor, to: provide an application associated with receiving user inputs for testing a virtual network function (VNF) with an edge gateway device remote from the VNF; receive, via the application, a first user input associated with adding an image of a virtual machine instance to the application; download, via the application, the image based on the first user input; receive, via the application, a second user input associated with instantiating a service associated with the virtual machine instance; instantiate, via the application, the service based on the second user input; receive, via the application, a third user input associated with testing the VNF with the edge gateway device using the image and the service; and execute, via the application, a test of the VNF with the edge gateway device using the image and the service based on the third user input.

DETAILED DESCRIPTION

Aspects of the present disclosure involve systems, methods, and the like, for enhanced testing of edge gateways with a virtual network function.

Some communications network customers may want to test their virtual network functionality with an edge gateway of a communications network (e.g., to determine whether an edge gateway is a solution for the customer's virtual network function). Tests currently require sending all this hardware to a customer premise. To test a virtual network function (VNF), hardware often is sent to a customer so they can test it with the VNF, often requiring significant field testing over weeks or months.

There is therefore a need for enhanced testing of edge gateways with a virtual network function.

In one or more embodiments, an application may enable a communications network user to test a VNF with an edge gateway of the communications network without requiring the edge gateway hardware to be built and configured at the customer premise. An application may allow the customer to add an image to use for virtual machine instances (e.g., a virtual machine image that behaves like a computer). The application may allow users to run manual tests, automated tests, schedule tests, manage images (e.g., for virtual machine instances) loaded to the edge gateway, view test metrics, and manage users that have access to the application test portal. The application may function as a software “sandbox” that allows users to test their machine image/environment without any new hardware required to be installed.

In one or more embodiments, the application may allow users to upload an image of their virtual machine. The application will facilitate service instantiation using the virtual machine image, create logical connections for the VNF on physical hardware, and perform tests, including customer-defined tests.

In one or more embodiments, the application provides a premise virtualization concept that allows users to “try before buying” by not requiring the edge gateway hardware to be purchased prior to testing VNFs with the edge gateways. The application allows users to upload a virtual machine image and reserve available hardware racks for testing. Instantiating a service may include application programming interface (API) calls to software that creates procedures to communicate with the testing environment. The application may facilitate spinning up the VNF, creating and testing the gateway, and the like without the user's involvement. The physical devices and their connections used in the testing may be set up (e.g., in a lab remote from customer premises), and the logical connections may be established by the application based on the user's selected inputs. The establishment of the connections may be automated in this manner. The tests may be templatized, and testing may be scheduled periodically (e.g., allowing for repetition), including the reservation of an environment and performance of the tests at different days, times, etc.

In one or more embodiments, the application may store only one copy of a machine image at a time, but users may use an image as many times as needed for separate virtual machine instances. The application may use checksums to verify images (e.g., checksums are unique identifiers assigned to images). To add an image, a user may sign into the application, select “add image,” and complete corresponding fields such as image name, uniform resource locator (URL), checksum type (e.g., MD5, etc.), host type (e.g., type of edge gateway), required CPU count, required RAM, required disk memory, and the like. Table 1 below shows example fields and their descriptions for adding an image.

TABLE 1Fields for Adding an Image:FieldDescriptionNameType a name for the image.URLType the URL where the user can downloadthe image. User cannot have duplicate URLsfor images.Note: The URLs must be publicly accessible.Application cannot download images stored atsecured or protected URLs.Checksum TypeSelect MD5 or SHA256 for the imagechecksum type.ChecksumType or paste the code that identifies theimage. Application checks the code against thechecksum in the image. If the checksum valuesdo not match, the adding process fails.Host TypeSelect Edge Gateway.Required CPUSelect the number of CPUs required for thevirtual machine.Required RAMSelect the amount of RAM (in MB) requiredfor the virtual machine.Required DiskSelect the amount of storage (in GB) requiredfor the virtual machine.Job Name(Optional) Type a name for the job to add animage. If user does not give this task a customjob name, one is automatically generated. Forexample, a generated job name could be5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to locate in listsand lines of code.Custom Job(Optional) Type an identifier of the imageIdentifieradding job. If you do not give this task acustom job identifier, one is automaticallygenerated. For example, a generated Job IDcould be 45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate inlists and lines of code.

In one or more embodiments, after the user has entered the fields to add an image with the application, the user may select “start download” to cause the application to add the image based on the entered data from Table 1.

In one or more embodiments, the application may enable users to create services that represent their virtual machine configuration. Services may have multiple instances using the same image multiple times, or different images for each instance. Services may be configured as one of the following VNF type combinations: one router, one router and any of a bring your own firewall, one sessions border controller, one monitor, or one bring your own IT payload, and/or multiple bring your own IT payload. The create a service, the user may sign into the application, select “services,” select “instantiate service,” and in the instantiate services window of the application, may enter a name for the service and a description of the service. The user may select “add,” and in the instantiate services window, may complete the fields shown below in Table 2.

TABLE 2Fields for Instantiating a Service:FieldDescriptionNameType the name of the instance. User can havemultiple instances within a service. Forexample, a router and a monitor within oneservice.EnvironmentSelect the Edge Gateway device for theenvironment.ServiceSelect Basic VNF.CloudInit UserType or paste the cloud-init script for theData Scriptservice. The script is for automated commands.Note: This is required if for user to use theCloudinit Mime Type field.CloudInit Mime TypeType one of the following cloud-init mimetypes for the corresponding user data script:Cloud BoothookCloud ConfigInclude URLInclude URL OncePart HandlerShell ScriptUpstart JobText PlainNoneNote: This is required if you use the CloudinitUser Data Script field.VNF TypeType one of the following VNF types for theinstance:RouterBYOFW (bring your own firewall)SBC (session border controller)MonitorBYOITP (bring your own IT payload)BYOITP Standalone (bring your own ITpayload)Ephemeral BlockSelect the amount of extra storage for theStorage (GB)instance. This storage is assigned to thisinstance and does not add or deduct from thetotal storage configured for the image.Image 1Select the image to use for this instance. Beaware of the functionality and limitations ofthe image in relation to the VNF type assignedto the instance.

After entering the fields of Table 2, a user may select “save task,” and optionally may add instances as service components before instantiating the service. Selecting “instantiate” will result in the application creating the service and displaying the progress in a running job window.

In one or more embodiments, the application may allow users to test functionality and correct configurations by retrieving instance console URLs and running tests. A user may use the application to run tests with parameters using a parser. The application may evaluate test results (e.g., with XPath, JSON path, or REGEX parser types and expressions).

In one or more embodiments, the application may retrieve console URLs. To retrieve an instance console URL, a user may sign into the application, select “services,” enter a name or keywords into a search field to filter services presented, and select the desired service from the corresponding list of presented services. The user may select “run test” on the selected service, and complete the fields of Table 3 below in a “run test” window.

TABLE 3Fields to Run Test:FieldDescriptionTestSelect Get Console to obtain a URL to view theVNF console.AuthorizeSelect one of the following options:Images On PassTrue to authorize images assigned to theservice after a successful test.False to leave the assigned images asunauthorized.If images are already authorized, no actions aretaken to the images.

Optionally, to add success parameters to the test to ensure that the virtual machine is working as intended, the user may select “add evaluations” and complete the fields of Table 4 below.

Optionally, to add a job name and identifier o the test to simplify locating the test, the user may select “advanced options” and complete the fields of Table 5 below.

TABLE 5Advanced Options for Tests:FieldDescriptionJob NameType a name for the console retrieval job. Ifuser does not give this task a job name, one isautomatically generated. For example, agenerated job name could be 5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to locate in listsand lines of code.Custom JobType an identifier of the console retrieval job.IdentifierIf user does not give this task a custom jobidentifier, one is automatically generated. Forexample, a generated Job ID could be45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate inlists and lines of code.

Then, the user may select “run test” based on the user inputs. The application may display progress of the test as it runs, and once the test has completed, may indicate whether the test passes or fails.

In one or more embodiments, the user may select “services,” select the service that was tested, and select the instance that was tested. The user may select “tests,” and select the test that was run. The application may display the test details. From the test details presentation, the user may copy the consoleURL from the outputs, paste the consoleURL into a browser tab address bar, and navigate to the instance console where the user may test the instance console and view details.

In one or more embodiments, the application enables users to perform a hypertext transfer protocol (HTTP) request test on a service. The user may need the following information to perform the test: virtual machine IP address, URL, body, and headers. To perform an HTTP request test on a service, the user may sign into the application, select “services,” enter a name or keyword into the search field o filter presented services, and select desired service from the presented services to expand the information presented. The user may select “run test” on the desired service, and the application may present a “run test” window. In the “run test” window, the user may complete the fields of Table 6 below.

TABLE 6Fields for Running a Test:FieldDescriptionTestSelect HTTP Request Test.AuthorizeSelect one of the following options:Images On PassTrue to authorize images assigned to theservice after a successful test.False to leave the assigned images asunauthorized.If images are already authorized, no actions aretaken to the images.vmIpType the IP address for the virtual machineuser is testing.ProtocolSelect http or https.portType the HTTP request port.urlType the URL for the test.methodSelect one of the following methods for thetest:GETPOSTPUTPATCHDELETEIf user used the body and headers fields, thisshould correspond to those entries.Note: This is required if user uses the body andheaders fields.bodyType or paste the body of the HTTP request forthe test. If user used the method and headersfields, this should correspond to those entries.For example, paste the body of a GET requestto test that request in the virtual machine.Note: This is required if user used the methodand headers fields.headersType or paste the header of the HTTP requestfor the test. If user used the method and bodyfields, this should correspond to those entries.For example, if user selected DELETE for themethod and pasted the body of that method forbody, type the header of that request to test therequest in the virtual machine.Note: This is required if user used the methodand body fields.allowUn-Select one of the following options:authorizedTrue to pass a test for an instance with anunauthorized image.False to fail a test for an instance with anunauthorized image.

Optionally, to add success parameters to a test to ensure that a virtual machine is working as intended, the user may select “add evaluations” and complete the fields of Table 7 below.

Optionally, to add a job name and identifier to the test to simplify locating the test, the user may select “advanced options” and complete the fields of Table 8 below.

TABLE 8Fields to Add Evaluations:FieldDescriptionJob NameType a name for the HTTP request test job. Ifuser does not give this task a job name, one isautomatically generated. For example, agenerated job name could be 5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to locate in listsand lines of code.Custom JobType an identifier of the HTTP request test job.IdentifierIf you do not give this task a custom jobidentifier, one is automatically generated. Forexample, a generated Job ID could be45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate inlists and lines of code.

The user may select “run test,” the application may run the test, and may display the progress of the test. When the test passes or fails, the application may display an indication of passage or failure accordingly. On a services page, the user may select the service tested, and select the instance tested. On a tests tab, the user may select the task that was run. The application may display the test details, and in the test details, the user may view the test results in an outputs section. The output information and test URLs may be used by the user as needed.

In one or more embodiments, he application may allow a user to perform a Netconf test (e.g., protocol to install, manipulate, and delete network device configurations) on a service, and may require the following information to perform the test: port, username, password, and template. The user may sign into the application, select “services,” select a desired service, select “run test” on the selected service, and the application may run the test on the service. The user may enter the fields of Table 9 below.

TABLE 9Fields for Running a Test:FieldDescriptionTestSelect Netconf Test.AuthorizeSelect one of the following options:ImagesTrue to authorize images assigned to theOn Passservice after a successful test.False to leave the assigned images asunauthorized.If images are already authorized, no actions aretaken to the images.portType the Netconf port.userType the Netconf username.passwordType the Netconf username password.

Optionally, the user may add success parameters to the test to ensure that the virtual machine is working as intended. The user may select “add evaluations” and complete the fields of Table 10 below:

Optionally, the user may add a job name and identifier to the test to simplify locating the test, the user may select “advanced options” and complete the fields shown below in Table 11.

TABLE 11Advanced Options:FieldDescriptionJob NameType a name for the Netconf test job. If userdoes not give this task a job name, one isautomatically generated. For example, agenerated job name could be 5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to locate in listsand lines of code.Custom JobType an identifier of the Netconf test job. IfIdentifieruser does not give this task a custom jobidentifier, one is automatically generated. Forexample, a generated Job ID could be45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate inlists and lines of code.

The user may select “run test,” the application may run the test and present the progress of the test, and when complete, may present results of the test (e.g., passage or failure). On the services tab, the user may select the service tested, the instance tested, and the test that was run. The application may display the test details.

In one or more embodiments, the application may allow users to perform an Ansible test on a service when the user provides the virtual machine's IP address, port, their username and password, and playbook (e.g., list of tasks that automatically execute for specified inventory/groups). Table 12 below shows the inputs used for running an Ansible test with the application. Other tests may be selected and run, such as Netconf and HTTP request tests, for example.

TABLE 12Fields for Running Ansible Test:FieldDescriptionTestSelect Ansible Test.AuthorizeSelect one of the following options:Images On PassTrue to authorize images assigned to theservice after a successful test.False to leave the assigned images asunauthorized.If images are already authorized, no actions aretaken to the images.vmIpType the IP address for the virtual machineuser is testing.portType the Ansible port.userType the Ansible username.passwordType the Ansible username password.playbookType or paste the Ansible playbook.

Optionally, a user may add success parameters to the Ansible test to ensure that the virtual machine is operating as intended. The success parameters may be added when the user selects “add evaluations” with the application according to the fields of Table 13 below.

TABLE 13Fields for Adding Evaluations to Ansible Test:FieldDescriptionOutput KeySelect rawResponse. This parameter evaluatesthe page response.ComparisonSelect Equals, Less Than, or Greater Than, andValuethen type the page response value.Parser TypeSelect the parser type for the parser expressionevaluation. Refer to Testing Virtual Machinesfor more information.Note: This is required if user uses the ParserExpression field.ParserType the parser expression, according to theExpressionParser Type selected, for the evaluation.Note: This is required if user uses the ParserType field.

Optionally, a user may select Advanced Options to add a job identifier to the Ansible test according to the fields of Table 14 below.

TABLE 14Advanced Fields for Ansible Test:FieldDescriptionJob NameType a name for the Ansible test job. If you donot give this task a job name, one isautomatically generated. For example, agenerated job name could be 5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to locate in listsand lines of code.Custom JobType an identifier of the Ansible test job. IfIdentifieryou do not give this task a custom jobidentifier, one is automatically generated. Forexample, a generated Job ID could be45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate inlists and lines of code.

When a user selects “Run Test,” the application may run the Ansible test according to the inputs provided by the user, and may present the progress and results of the test.

In one or more embodiments, the application may allow users to delete a service or instance from the application. If an instance in a service is deleted and that is the only instance in the service, the service may be deleted.

In one or more embodiments, the application may allow users to manage images used for virtual machines. The application may enable users to authorize images to indicate that they have been tested and approved once the image has been added via the application. The application may allow users to view details of downloaded images, such as status of authorization, source location, specifications, and checksums. The application may allow users to delete images from the application. The application may allow users to edit image names. The application may allow users to download images for virtual machines and store the images locally. The application may allow users to view jobs such as downloading an image to use for an instance and instantiating a service. The application may present details of a job, such as start and end times, state (e.g., complete, failed, etc.), and activity logs (e.g., debug, information, warning, error).

In one or more embodiments, the application may allow users to create job templates. Job templates may refer to preconfigured parameters for jobs that can be performed immediately or at scheduled times. For example, a user may create a job template to perform Ansible tests on specified machines on a bi-weekly basis. Table 15 below shows the fields used for user inputs for building a job template.

TABLE 15Job Type Fields:JobDescriptionSectionImage downloadDownload an image.Adding an ImageCreate serviceCreate a service withoutCreating a Servicecontainerany instances.Instantiate serviceCreate a service withCreating a Serviceinstances.Destroy serviceDelete a service orDeleting a Service orinstanceinstance.InstanceTestTest a service.Testing Virtual Machines

In one or more embodiments, the application may allow users to start a job from a job template (e.g., to ensure uniform processing). To start a job from a job template, a user may complete the fields of Table 16 below.

TABLE 16Fields for Starting a Job from a Job Template:FieldDescriptionJob NameType a name for the job. If user does not givea job a custom name, one is automaticallygenerated. For example, a generated job namecould be 5b59ac87-2dc6-4010-b681-cb975046501.A custom job name is easier to identify in thelogs.CustomType an identifier for the job. If user does notIdentifiergive the job a custom identifier, one isautomatically generated. For example, agenerated Job ID could be 45239414-79e4-462b-92ae-f00eacda6e67.A custom job identifier is easier to locate.Job TemplateSelect the template to use for the job.Schedule JobSelect Now to start the job now or Schedule tofor Activationschedule when the job occurs.

FIG.1illustrates an example system100for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

Referring toFIG.1, the system100may include customer premise devices102(e.g., customer premise device104, customer premise device106, etc.) including VNFs (e.g., the customer premise device104including a VNF108and the customer premise device106including a VNF110) that may be tested with host devices112(e.g., edge gateway devices) using an application represented by VNF testing modules114provided by a remote service116. The host devices112may be physically and logically arranged and configured at a location remote from the customer premise devices102such that the VNF108and the VNF110may be tested on the host devices112without the host devices112being physically present at the customer premises.

In one or more embodiments, the VNF testing modules114may allow the customer premise devices102to provide user inputs to add virtual machine images, instantiate services associated with instances of the virtual machine images, test the VNFs with the host devices112, and the like. Tables 1-16 above show example fields that the VNF testing modules114may provide via one or more user interfaces, and that may be entered by the customer premise devices102.

In one or more embodiments, the application represented by the VNF modules114may enable a communications network user to test a VNF with an edge gateway (e.g., the host devices112) without requiring the edge gateway hardware to be built and configured at the customer premise. The application may allow a customer to add an image to use for virtual machine instances. The application may allow users to run manual tests, automated tests, schedule tests, manage images (e.g., for virtual machine instances) loaded to the edge gateway, view test metrics, and manage users that have access to the application test portal. The application may function as a software “sandbox” that allows users to test their machine image/environment without any new hardware required to be installed.

In one or more embodiments, the application represented by the VNF modules114may allow users to upload an image of their virtual machine. The application will facilitate service instantiation using the virtual machine image, create logical connections for the VNF on physical hardware, and perform tests, including customer-defined tests.

In one or more embodiments, the application represented by the VNF modules114provides a premise virtualization concept that allows users to “try before buying” by not requiring the edge gateway hardware of the host devices112to be purchased prior to testing VNFs with the edge gateways. The application allows users to upload a virtual machine image and reserve available hardware racks for testing. Instantiating a service may include API calls to software that creates procedures to communicate with the testing environment where the host devices112are located. The application may facilitate spinning up the VNF, creating and testing the gateway, and the like without the user's involvement. The physical devices and their connections used in the testing may be set up (e.g., in a lab remote from customer premises), and the logical connections may be established by the application based on the user's selected inputs. The establishment of the connections may be automated in this manner. The tests may be templatized, and testing may be scheduled periodically (e.g., allowing for repetition), including the reservation of an environment and performance of the tests at different days, times, etc.

FIG.2shows an example dashboard interface200of a system for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

Referring toFIG.2, the dashboard interface200may be presented by a device202using the VNF testing modules114ofFIG.1to allow users to see, add, edit, and remove virtual machine instance images, their state, and their dates. Table 1 above shows fields that a user may input when requesting to add a virtual machine instance image, such as a name210for the image, an address (e.g., a URL), state212(e.g., authorized, complete, failed, etc.), date214, the checksum and checksum type, the type of host device (e.g., of the host devices112ofFIG.1), and the computer resources needed (e.g., CPU, memory, etc.). A selectable option to add a virtual machine image216also may be presented using the dashboard interface200. The user also may create and name a job for adding an image. Once the user inputs have been provided for adding an image, the VNF testing modules114may download the image from the input address, and may add the image based on the configuration specified by the user inputs.

FIG.3shows an example services interface300of a system for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

Referring toFIG.3, the services interface300may be presented using the VNF testing modules114ofFIG.1and the device202to allow users to create services that represent a virtual machine configuration. Services can have multiple instances using the same image multiple times or different images for each instance. As shown inFIG.3, the services interface300may show the status302of services, their names304, descriptions306, and where they have been instantiated308. When a user requests to instantiate a service (e.g., using a selectable option to instantiate a service310) from the services interface300, the user may be prompted to input a service name and description, along with other fields as shown in Table 2 above. The VNF testing modules114may create the service based on the user inputs.

FIG.4shows an example test interface400of a system for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

Referring toFIG.4, the test interface400may be presented using the VNF testing modules114ofFIG.1and the device202to allow users to create and execute tests of VNFs with host devices, and to see the progress and result of the tests. For example, as shown inFIG.4, the test interface400may present the status302of a test (e.g., empty402, online404, deleted405), an instance type406being tested by a test, an instance name408, a test environment410, and where the test is instantiated308. When a user requests to run a test (e.g., using a selectable option412), the user may be prompted to provide inputs as shown in Table 3 above, optionally in Table 4 above to add success parameters, and optionally in Table 5 above to add a job name and identifier for running a test. A user may select to authorize virtual machine images assigned to a service after a successful test or to leave images unauthorized even after a successful test. Tests may include HTTP tests, Netconf tests, and Ansible tests, for some examples.

FIG.5shows an example jobs interface500of a system for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

Referring toFIG.5, the jobs interface500may be presented using the VNF testing modules114ofFIG.1to allow users to view job details and logs. For example, jobs may include actions such as downloading an image to use for an instance and instantiating a service. If errors occur when downloading an image or instantiating a service, for example, the job details or logs may indicate what caused the error. The jobs interface500may show a job name, a job state (e.g., complete, failed, in progress, etc.), and job start and end times. Job logs may show debug items, information items, warning items, and error items, for example. From the jobs interface500, a user may start a job, which may or may not be defined by a template, and to create a job template define a job and when to perform the job. The fields in Table 15 above show the user inputs that a user may be prompted to provide upon creating a job. Table 16 above shows the fields that a user may be prompted to provide upon creating a job template.

FIG.6is a flow for a process600for testing virtual network functions with edge gateway devices, in accordance with one embodiment.

At block602, a device (e.g., the remote service116) may provide an application (e.g., represented by the VNF testing modules114ofFIG.1) associated with receiving user inputs for testing a VNF function (e.g., the VNF108ofFIG.1) with an edge gateway device (e.g., the host devices112) remote from the VNF (e.g., in a testing environment remote from the customer premises where the VNF resides).

At block604, the device may receive, via the application (e.g., the dashboard interface200ofFIG.2), a first user input associated with adding an image of a virtual machine to the application. Table 1 above shows fields that a user may input when requesting to add a virtual machine instance image, such as a name for the image, an address (e.g., a URL), the checksum and checksum type, the type of host device (e.g., of the host devices112ofFIG.1), and the computer resources needed (e.g., CPU, memory, etc.). The user also may create and name a job for adding an image.

At block606, the device may download, via the application, the image based on the first user input. In particular, the user may provide an address (e.g., URL) when inputting the first user input, the address representing a location from which the device may download the image.

At block608, the device may receive, via the application (e.g., the services interface300ofFIG.3), a second user input associated with instantiating a service associated with the virtual machine instance. When a user requests to instantiate a service from the services interface300, the user may be prompted to input a service name and description, along with other fields as shown in Table 2 above.

At block610, the device may instantiate, via the application, based on the second user input, the service. Instantiation may depend on the selected instance, edge gateway environment for instantiation, script, VNF type, and image provided by the user via the application.

At block612, the device may receive, via the application (e.g., the test interface400ofFIG.4), a third user input associated with testing the VNF with the edge gateway device using the image and the service inputted by the user. When a user requests to run a test, the user may be prompted to provide inputs as shown in Table 3 above, optionally in Table 4 above to add success parameters, and optionally in Table 5 above to add a job name and identifier for running a test. A user may select to authorize virtual machine images assigned to a service after a successful test or to leave images unauthorized even after a successful test. Tests may include HTTP tests, Netconf tests, and Ansible tests, for some examples.

At block614, the device may execute, via the application, the test of the VNF with the edge gateway device using the user-provided image and selected service based on the third user input. When executing a test, the selected edge gateway device may be configured according to the user inputs and virtual machine configuration without the selected edge gateway device needing to be at the customer premises. In this manner, the VNF test may be run remotely.

FIG.7is a block diagram illustrating an example of a computing device or computer system700which may be used in implementing the embodiments of the components of the network disclosed above. For example, the computing system700ofFIG.7may represent at least a portion of the system100shown inFIG.1, as discussed above. The computer system (system) includes one or more processors702-706, the VNF testing modules114ofFIG.1, and a hypervisor711for facilitating VNFs. Processors702-706may include one or more internal levels of cache (not shown) and a bus controller722or bus interface unit to direct interaction with the processor bus712. Processor bus712, also known as the host bus or the front side bus, may be used to couple the processors702-706with the system interface724. System interface724may be connected to the processor bus712to interface other components of the system700with the processor bus712. For example, system interface724may include a memory controller718for interfacing a main memory716with the processor bus712. The main memory716typically includes one or more memory cards and a control circuit (not shown). System interface724may also include an input/output (I/O) interface720to interface one or more I/O bridges725or I/O devices with the processor bus712. One or more I/O controllers and/or I/O devices may be connected with the I/O bus726, such as I/O controller728and I/O device730, as illustrated.

I/O device730may also include an input device (not shown), such as an alphanumeric input device, including alphanumeric and other keys for communicating information and/or command selections to the processors702-706. Another type of user input device includes cursor control, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to the processors702-706and for controlling cursor movement on the display device.

System700may include a dynamic storage device, referred to as main memory716, or a random access memory (RAM) or other computer-readable devices coupled to the processor bus712for storing information and instructions to be executed by the processors702-706. Main memory716also may be used for storing temporary variables or other intermediate information during execution of instructions by the processors702-706. System700may include a read only memory (ROM) and/or other static storage device coupled to the processor bus712for storing static information and instructions for the processors702-706. The system outlined inFIG.7is but one possible example of a computer system that may employ or be configured in accordance with aspects of the present disclosure.

According to one embodiment, the above techniques may be performed by computer system700in response to processor704executing one or more sequences of one or more instructions contained in main memory716. These instructions may be read into main memory716from another machine-readable medium, such as a storage device. Execution of the sequences of instructions contained in main memory716may cause processors702-706to perform the process steps described herein. In alternative embodiments, circuitry may be used in place of or in combination with the software instructions. Thus, embodiments of the present disclosure may include both hardware and software components.

A machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). Such media may take the form of, but is not limited to, non-volatile media and volatile media and may include removable data storage media, non-removable data storage media, and/or external storage devices made available via a wired or wireless network architecture with such computer program products, including one or more database management products, web server products, application server products, and/or other additional software components. Examples of removable data storage media include Compact Disc Read-Only Memory (CD-ROM), Digital Versatile Disc Read-Only Memory (DVD-ROM), magneto-optical disks, flash drives, and the like. Examples of non-removable data storage media include internal magnetic hard disks, SSDs, and the like. The one or more memory devices706may include volatile memory (e.g., dynamic random access memory (DRAM), static random access memory (SRAM), etc.) and/or non-volatile memory (e.g., read-only memory (ROM), flash memory, etc.).