added WASM support

This commit is contained in:
2025-05-03 01:29:11 +01:00
parent ece1e63fda
commit 034f9e2896
56 changed files with 1293 additions and 10443 deletions

View File

@@ -7,7 +7,6 @@ import (
"github.com/Akilan1999/p2p-rendering-computation/client/clientIPTable"
"github.com/Akilan1999/p2p-rendering-computation/config/generate"
"github.com/Akilan1999/p2p-rendering-computation/p2p"
"github.com/Akilan1999/p2p-rendering-computation/plugin"
"github.com/Akilan1999/p2p-rendering-computation/server"
"github.com/urfave/cli/v2"
)
@@ -86,36 +85,36 @@ var CliAction = func(ctx *cli.Context) error {
}
// Displays all images available on the server side
if ViewImages != "" {
imageRes, err := client.ViewContainers(ViewImages)
standardOutput(err, imageRes)
}
// Function called to stop and remove server from Docker
if RemoveVM != "" {
if ID == "" {
fmt.Println("provide container ID via --ID or --id")
} else {
err := client.RemoveContianer(RemoveVM, ID)
standardOutput(err, nil)
}
}
//if ViewImages != "" {
// imageRes, err := client.ViewContainers(ViewImages)
// standardOutput(err, imageRes)
//}
//
//// Function called to stop and remove server from Docker
//if RemoveVM != "" {
// if ID == "" {
// fmt.Println("provide container ID via --ID or --id")
// } else {
// err := client.RemoveContianer(RemoveVM, ID)
// standardOutput(err, nil)
// }
//}
//Call function to create Docker container
if CreateVM != "" {
var PortsInt int
if Ports != "" {
// Convert Get Request value to int
fmt.Sscanf(Ports, "%d", &PortsInt)
}
// Calls function to do Api call to start the container on the server side
imageRes, err := client.StartContainer(CreateVM, PortsInt, GPU, ContainerName, BaseImage)
standardOutput(err, imageRes)
}
//if CreateVM != "" {
//
// var PortsInt int
//
// if Ports != "" {
// // Convert Get Request value to int
// fmt.Sscanf(Ports, "%d", &PortsInt)
// }
//
// // Calls function to do Api call to start the container on the server side
// imageRes, err := client.StartContainer(CreateVM, PortsInt, GPU, ContainerName, BaseImage)
//
// standardOutput(err, imageRes)
//}
//Call if specs flag is called
if Specs != "" {
@@ -138,83 +137,83 @@ var CliAction = func(ctx *cli.Context) error {
// If the view plugin flag is called then display all
// plugins available
if ViewPlugin {
plugins, err := plugin.DetectPlugins()
standardOutput(err, plugins)
}
//if ViewPlugin {
// plugins, err := plugin.DetectPlugins()
// standardOutput(err, plugins)
//}
// If the flag Tracked Container is called or the flag
// --tc
if TrackedContainers {
err, trackedContainers := client.ViewTrackedContainers()
standardOutput(err, trackedContainers)
}
//if TrackedContainers {
// err, trackedContainers := client.ViewTrackedContainers()
// standardOutput(err, trackedContainers)
//}
//Executing plugin when the plugin flag is called
// --plugin
if ExecutePlugin != "" {
// To execute plugin requires the container ID or group ID provided when being executed
if ID != "" {
err := plugin.CheckRunPlugin(ExecutePlugin, ID)
standardOutput(err, nil)
}
//else {
// fmt.Println("provide container ID via --ID or --id")
//}
}
//if ExecutePlugin != "" {
// // To execute plugin requires the container ID or group ID provided when being executed
// if ID != "" {
// err := plugin.CheckRunPlugin(ExecutePlugin, ID)
// standardOutput(err, nil)
// }
// //else {
// // fmt.Println("provide container ID via --ID or --id")
// //}
//
//}
// Executing function to create new group
// Creates new group and outputs JSON file
if CreateGroup {
group, err := client.CreateGroup()
standardOutput(err, group)
}
//if CreateGroup {
// group, err := client.CreateGroup()
// standardOutput(err, group)
//}
// Actions to be performed when the
// group flag is called
// --group <Group ID>
if Group != "" {
// Remove container from group based on group ID provided
// --rmcgroup --id <contianer id>
if RemoveContainerGroup && ID != "" {
group, err := client.RemoveContainerGroup(ID, Group)
standardOutput(err, group)
} else if ID != "" { // Add container to group based on group ID provided
// --id <Container ID>
group, err := client.AddContainerToGroup(ID, Group)
standardOutput(err, group)
} else { // View all information about current group
group, err := client.GetGroup(Group)
standardOutput(err, group)
}
}
//if Group != "" {
// // Remove container from group based on group ID provided
// // --rmcgroup --id <contianer id>
// if RemoveContainerGroup && ID != "" {
// group, err := client.RemoveContainerGroup(ID, Group)
// standardOutput(err, group)
// } else if ID != "" { // Add container to group based on group ID provided
// // --id <Container ID>
// group, err := client.AddContainerToGroup(ID, Group)
// standardOutput(err, group)
// } else { // View all information about current group
// group, err := client.GetGroup(Group)
// standardOutput(err, group)
// }
//}
// Execute function to remove entire group
// when remove group flag is called
// --rmgroup
if RemoveGroup != "" {
err := client.RemoveGroup(RemoveGroup)
standardOutput(err, nil)
}
//if RemoveGroup != "" {
// err := client.RemoveGroup(RemoveGroup)
// standardOutput(err, nil)
//}
// Execute Function to view all groups
if Groups {
groups, err := client.ReadGroup()
standardOutput(err, groups)
}
//if Groups {
// groups, err := client.ReadGroup()
// standardOutput(err, groups)
//}
//--------------------------------
if PullPlugin != "" {
err := plugin.DownloadPlugin(PullPlugin)
standardOutput(err, nil)
}
if RemovePlugin != "" {
err := plugin.DeletePlugin(RemovePlugin)
standardOutput(err, nil)
}
//if PullPlugin != "" {
// err := plugin.DownloadPlugin(PullPlugin)
// standardOutput(err, nil)
//}
//
//if RemovePlugin != "" {
// err := plugin.DeletePlugin(RemovePlugin)
// standardOutput(err, nil)
//}
if AddMetaData != "" {
err := clientIPTable.AddCustomInformationToIPTable(AddMetaData)

View File

@@ -74,48 +74,48 @@ var AppConfigFlags = []cli.Flag{
EnvVars: []string{"ADD_SERVER"},
Destination: &AddServer,
},
&cli.StringFlag{
Name: "ViewImages",
Aliases: []string{"vi"},
Usage: "View images available on the server IP address",
EnvVars: []string{"VIEW_IMAGES"},
Destination: &ViewImages,
},
&cli.StringFlag{
Name: "CreateVM",
Aliases: []string{"touch"},
Usage: "Creates Docker container on the selected server",
EnvVars: []string{"CREATE_VM"},
Destination: &CreateVM,
},
&cli.StringFlag{
Name: "ContainerName",
Aliases: []string{"cn"},
Usage: "Specifying the container run on the server side",
EnvVars: []string{"CONTAINER_NAME"},
Destination: &ContainerName,
},
&cli.StringFlag{
Name: "BaseImage",
Aliases: []string{"bi"},
Usage: "Specifying the docker base image to template the dockerfile",
EnvVars: []string{"CONTAINER_NAME"},
Destination: &BaseImage,
},
&cli.StringFlag{
Name: "RemoveVM",
Aliases: []string{"rm"},
Usage: "Stop and Remove Docker container (IP:port) accompanied by container ID via --ID or --id",
EnvVars: []string{"REMOVE_VM"},
Destination: &RemoveVM,
},
&cli.StringFlag{
Name: "ID",
Aliases: []string{"id"},
Usage: "Docker Container ID",
EnvVars: []string{"ID"},
Destination: &ID,
},
//&cli.StringFlag{
// Name: "ViewImages",
// Aliases: []string{"vi"},
// Usage: "View images available on the server IP address",
// EnvVars: []string{"VIEW_IMAGES"},
// Destination: &ViewImages,
//},
//&cli.StringFlag{
// Name: "CreateVM",
// Aliases: []string{"touch"},
// Usage: "Creates Docker container on the selected server",
// EnvVars: []string{"CREATE_VM"},
// Destination: &CreateVM,
//},
//&cli.StringFlag{
// Name: "ContainerName",
// Aliases: []string{"cn"},
// Usage: "Specifying the container run on the server side",
// EnvVars: []string{"CONTAINER_NAME"},
// Destination: &ContainerName,
//},
//&cli.StringFlag{
// Name: "BaseImage",
// Aliases: []string{"bi"},
// Usage: "Specifying the docker base image to template the dockerfile",
// EnvVars: []string{"CONTAINER_NAME"},
// Destination: &BaseImage,
//},
//&cli.StringFlag{
// Name: "RemoveVM",
// Aliases: []string{"rm"},
// Usage: "Stop and Remove Docker container (IP:port) accompanied by container ID via --ID or --id",
// EnvVars: []string{"REMOVE_VM"},
// Destination: &RemoveVM,
//},
//&cli.StringFlag{
// Name: "ID",
// Aliases: []string{"id"},
// Usage: "Docker Container ID",
// EnvVars: []string{"ID"},
// Destination: &ID,
//},
&cli.StringFlag{
Name: "Ports",
Aliases: []string{"p"},
@@ -123,13 +123,13 @@ var AppConfigFlags = []cli.Flag{
EnvVars: []string{"NUM_PORTS"},
Destination: &Ports,
},
&cli.BoolFlag{
Name: "GPU",
Aliases: []string{"gpu"},
Usage: "Create Docker Containers to access GPU",
EnvVars: []string{"USE_GPU"},
Destination: &GPU,
},
//&cli.BoolFlag{
// Name: "GPU",
// Aliases: []string{"gpu"},
// Usage: "Create Docker Containers to access GPU",
// EnvVars: []string{"USE_GPU"},
// Destination: &GPU,
//},
&cli.StringFlag{
Name: "Specification",
Aliases: []string{"specs"},
@@ -151,63 +151,63 @@ var AppConfigFlags = []cli.Flag{
EnvVars: []string{"NETWORK_INTERFACE"},
Destination: &NetworkInterface,
},
&cli.BoolFlag{
Name: "ViewPlugins",
Aliases: []string{"vp"},
Usage: "Shows plugins available to be executed",
EnvVars: []string{"VIEW_PLUGIN"},
Destination: &ViewPlugin,
},
&cli.BoolFlag{
Name: "TrackedContainers",
Aliases: []string{"tc"},
Usage: "View (currently running) containers which have " +
"been created from the client side ",
EnvVars: []string{"TRACKED_CONTAINERS"},
Destination: &TrackedContainers,
},
&cli.StringFlag{
Name: "ExecutePlugin",
Aliases: []string{"plugin"},
Usage: "Plugin which needs to be executed",
EnvVars: []string{"EXECUTE_PLUGIN"},
Destination: &ExecutePlugin,
},
&cli.BoolFlag{
Name: "CreateGroup",
Aliases: []string{"cgroup"},
Usage: "Creates a new group",
EnvVars: []string{"CREATE_GROUP"},
Destination: &CreateGroup,
},
&cli.StringFlag{
Name: "Group",
Aliases: []string{"group"},
Usage: "group flag with argument group ID",
EnvVars: []string{"GROUP"},
Destination: &Group,
},
&cli.BoolFlag{
Name: "Groups",
Aliases: []string{"groups"},
Usage: "View all groups",
EnvVars: []string{"GROUPS"},
Destination: &Groups,
},
&cli.BoolFlag{
Name: "RemoveContainerGroup",
Aliases: []string{"rmcgroup"},
Usage: "Remove specific container in the group",
EnvVars: []string{"REMOVE_CONTAINER_GROUP"},
Destination: &RemoveContainerGroup,
},
&cli.StringFlag{
Name: "RemoveGroup",
Aliases: []string{"rmgroup"},
Usage: "Removes the entire group",
EnvVars: []string{"REMOVE_GROUP"},
Destination: &RemoveGroup,
},
//&cli.BoolFlag{
// Name: "ViewPlugins",
// Aliases: []string{"vp"},
// Usage: "Shows plugins available to be executed",
// EnvVars: []string{"VIEW_PLUGIN"},
// Destination: &ViewPlugin,
//},
//&cli.BoolFlag{
// Name: "TrackedContainers",
// Aliases: []string{"tc"},
// Usage: "View (currently running) containers which have " +
// "been created from the client side ",
// EnvVars: []string{"TRACKED_CONTAINERS"},
// Destination: &TrackedContainers,
//},
//&cli.StringFlag{
// Name: "ExecutePlugin",
// Aliases: []string{"plugin"},
// Usage: "Plugin which needs to be executed",
// EnvVars: []string{"EXECUTE_PLUGIN"},
// Destination: &ExecutePlugin,
//},
//&cli.BoolFlag{
// Name: "CreateGroup",
// Aliases: []string{"cgroup"},
// Usage: "Creates a new group",
// EnvVars: []string{"CREATE_GROUP"},
// Destination: &CreateGroup,
//},
//&cli.StringFlag{
// Name: "Group",
// Aliases: []string{"group"},
// Usage: "group flag with argument group ID",
// EnvVars: []string{"GROUP"},
// Destination: &Group,
//},
//&cli.BoolFlag{
// Name: "Groups",
// Aliases: []string{"groups"},
// Usage: "View all groups",
// EnvVars: []string{"GROUPS"},
// Destination: &Groups,
//},
//&cli.BoolFlag{
// Name: "RemoveContainerGroup",
// Aliases: []string{"rmcgroup"},
// Usage: "Remove specific container in the group",
// EnvVars: []string{"REMOVE_CONTAINER_GROUP"},
// Destination: &RemoveContainerGroup,
//},
//&cli.StringFlag{
// Name: "RemoveGroup",
// Aliases: []string{"rmgroup"},
// Usage: "Removes the entire group",
// EnvVars: []string{"REMOVE_GROUP"},
// Destination: &RemoveGroup,
//},
&cli.StringFlag{
Name: "MAPPort",
Aliases: []string{"mp"},
@@ -231,20 +231,20 @@ var AppConfigFlags = []cli.Flag{
},
// Generate only allowed in dev release
// -- REMOVE ON REGULAR RELEASE --
&cli.StringFlag{
Name: "Generate",
Aliases: []string{"gen"},
Usage: "Generates a new copy of P2PRC which can be modified based on your needs",
EnvVars: []string{"GENERATE"},
Destination: &Generate,
},
&cli.StringFlag{
Name: "ModuleName",
Aliases: []string{"mod"},
Usage: "New go project module name",
EnvVars: []string{"MODULENAME"},
Destination: &Modulename,
},
//&cli.StringFlag{
// Name: "Generate",
// Aliases: []string{"gen"},
// Usage: "Generates a new copy of P2PRC which can be modified based on your needs",
// EnvVars: []string{"GENERATE"},
// Destination: &Generate,
//},
//&cli.StringFlag{
// Name: "ModuleName",
// Aliases: []string{"mod"},
// Usage: "New go project module name",
// EnvVars: []string{"MODULENAME"},
// Destination: &Modulename,
//},
//&cli.BoolFlag{
// Name: "FRPServerProxy",
// Aliases: []string{"proxy"},
@@ -253,20 +253,20 @@ var AppConfigFlags = []cli.Flag{
// Destination: &FRPProxy,
//},
//--------------------------------
&cli.StringFlag{
Name: "PullPlugin",
Aliases: []string{"pp"},
Usage: "Pulls plugin from git repos",
EnvVars: []string{"PULLPLUGIN"},
Destination: &PullPlugin,
},
&cli.StringFlag{
Name: "RemovePlugin",
Aliases: []string{"rp"},
Usage: "Removes plugin",
EnvVars: []string{"REMOVEPLUGIN"},
Destination: &RemovePlugin,
},
//&cli.StringFlag{
// Name: "PullPlugin",
// Aliases: []string{"pp"},
// Usage: "Pulls plugin from git repos",
// EnvVars: []string{"PULLPLUGIN"},
// Destination: &PullPlugin,
//},
//&cli.StringFlag{
// Name: "RemovePlugin",
// Aliases: []string{"rp"},
// Usage: "Removes plugin",
// EnvVars: []string{"REMOVEPLUGIN"},
// Destination: &RemovePlugin,
//},
&cli.StringFlag{
Name: "AddMetaData",
Aliases: []string{"amd"},