public string Get(int repoID) { MySqlConnection con = new MySqlConnection(conBuilder.GetConnectionString(true)); string Command = $"SELECT ID, Name, PackageType, BaseDomain FROM Repositories WHERE ID=@repoID;"; MySqlCommand cmd = new MySqlCommand(Command, con); cmd.Parameters.AddWithValue("@repoID", repoID); con.Open(); MySqlDataReader reader = cmd.ExecuteReader(); Models.RepoData repo; if (reader.Read()) { repo = new Models.RepoData(reader.GetInt32("ID"), reader.GetString("Name"), reader.GetString("PackageType"), reader.GetString("BaseDomain")); } else { repo = new Models.RepoData(); } return(JsonSerializer.Serialize(repo)); }
public async Task OnPost() { Models.RepoData Repository = new Models.RepoData(0, Name, PackageType, BaseDomain); var Content = new StringContent(JsonSerializer.Serialize(Repository), Encoding.UTF8, "application/json"); HttpResponseMessage responseMessage = await client.PostAsync("api/registerRepo", Content); }
public static string CreateService(Models.RepoData RepositoryData) { string deploy = System.IO.File.ReadAllText("/KubernetesObjects/Service.yaml"); deploy = deploy.Replace("nameofrepo", RepositoryData.Name); deploy = deploy.Replace("namespacetemplate", Settings.KubernetesNamespace); return(deploy); }
public static k8s.Models.V1Service Service(Models.RepoData RepoData) { k8s.Models.V1Service KubeObject = k8s.Yaml.LoadFromFileAsync <k8s.Models.V1Service>("/KubernetesObjects/Service.yaml").Result; KubeObject.Metadata.Name = RepoData.Name; KubeObject.Metadata.NamespaceProperty = Settings.KubernetesNamespace; KubeObject.Spec.Selector["app"] = RepoData.Name; return(KubeObject); }
public static k8s.Models.V1PersistentVolumeClaim PVCIncoming(Models.RepoData RepoData) { k8s.Models.V1PersistentVolumeClaim KubeObject = k8s.Yaml.LoadFromFileAsync <k8s.Models.V1PersistentVolumeClaim>("/KubernetesObjects/PVC.yaml").Result; KubeObject.Metadata.Name = $"{RepoData.Name}-incoming-pvc"; KubeObject.Metadata.NamespaceProperty = Settings.KubernetesNamespace; KubeObject.Spec.StorageClassName = Settings.StorageClass; return(KubeObject); }
public static string CreatePersistentVolumeClaim_a(Models.RepoData RepositoryData) { string deploy = System.IO.File.ReadAllText("/KubernetesObjects/PVC.yaml"); deploy = deploy.Replace("nameofrepo-pvc", $"{RepositoryData.Name}-pvc"); deploy = deploy.Replace("namespacetemplate", Settings.KubernetesNamespace); deploy = deploy.Replace("storageclassnamex", Settings.StorageClass.Replace("\"", "")); deploy = deploy.Replace("\"", ""); return(deploy); }
public static string CreateIngress(Models.RepoData RepositoryData) { string deploy = System.IO.File.ReadAllText("/KubernetesObjects/Ingress.yaml"); deploy = deploy.Replace("nameofrepo", RepositoryData.Name); deploy = deploy.Replace("namespacetemplate", Settings.KubernetesNamespace); deploy = deploy.Replace("hostlink", RepositoryData.BaseDomain); deploy = deploy.Replace("repopath", $"/repository/linux/{RepositoryData.Name}"); return(deploy); }
public static k8s.Models.V1Ingress Ingress(Models.RepoData RepoData) { k8s.Models.V1Ingress KubeObject = k8s.Yaml.LoadFromFileAsync <k8s.Models.V1Ingress>("/KubernetesObjects/Ingress.yaml").Result; KubeObject.Metadata.Name = RepoData.Name; KubeObject.Metadata.NamespaceProperty = Settings.KubernetesNamespace; KubeObject.Spec.Rules[0].Host = Settings.RepositoryHostname; KubeObject.Spec.Rules[0].Http.Paths[0].Path = $"/Repository/{RepoData.Name}(/|$)(.*)"; KubeObject.Spec.Rules[0].Http.Paths[0].Backend.Service.Name = RepoData.Name; return(KubeObject); }
public async Task OnGet(string id) { ID = id; HttpResponseMessage responseMessage = await IndexModel.client.GetAsync($"api/repo/{ID}"); var body = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); Models.RepoData repo = JsonSerializer.Deserialize <Models.RepoData>(body); Name = repo.Name; PackageType = repo.PackageType; BaseDomain = repo.BaseDomain; }
public static string CreateDeployment(Models.RepoData RepositoryData) { string deploy = System.IO.File.ReadAllText("/KubernetesObjects/Deployment.yaml"); deploy = deploy.Replace("nameofrepo", RepositoryData.Name); deploy = deploy.Replace("namespacetemplate", Settings.KubernetesNamespace); deploy = deploy.Replace("claimnameRV", $"{RepositoryData.Name}-pvc"); deploy = deploy.Replace("claimnameID", $"{RepositoryData.Name}-incoming-pvc"); deploy = deploy.Replace("imagepullsecrettemplate", "iimagepullsecrettemplate"); deploy = deploy.Replace("initimage", getPackageType(RepositoryData.PackageType, false)); deploy = deploy.Replace("containerimage", getPackageType(RepositoryData.PackageType, true)); Console.WriteLine(deploy); return(deploy); }
public string Put(string repoID, [FromBody] Models.RepoData RepositoryData) { MySqlConnection con = new MySqlConnection(conBuilder.GetConnectionString(true)); string Command = $"UPDATE Repositories SET Name=@Name, PackageType=@PackageType, BaseDomain=@BaseDomain WHERE ID=@RepoID;"; MySqlCommand cmd = new MySqlCommand(Command, con); cmd.Parameters.AddWithValue("@Name", RepositoryData.Name); cmd.Parameters.AddWithValue("@PackageType", RepositoryData.PackageType); cmd.Parameters.AddWithValue("@RepoID", repoID); cmd.Parameters.AddWithValue("@BaseDomain", RepositoryData.BaseDomain); con.Open(); cmd.ExecuteNonQuery(); return(RepositoryData.Name); }
public string Post([FromBody] Models.RepoData RepositoryData) { MySqlConnection con = new MySqlConnection(conBuilder.GetConnectionString(true)); string Command = $"INSERT INTO Repositories (Name, PackageType, BaseDomain) VALUES (@Name, @PackageType, @BaseDomain)"; MySqlCommand cmd = new MySqlCommand(Command, con); cmd.Parameters.AddWithValue("@Name", RepositoryData.Name); cmd.Parameters.AddWithValue("@PackageType", RepositoryData.PackageType); cmd.Parameters.AddWithValue("@BaseDomain", RepositoryData.BaseDomain); con.Open(); cmd.ExecuteNonQuery(); #region noncode //KubeClient.CreateNamespacedDeployment(Deployment(RepositoryData), Settings.KubernetesNamespace); //KubeClient.CreateNamespacedService(Service(RepositoryData), Settings.KubernetesNamespace); //KubeClient.CreateNamespacedIngress(Ingress(RepositoryData), Settings.KubernetesNamespace); //KubeClient.CreateNamespacedPersistentVolumeClaim(PVC(RepositoryData), Settings.KubernetesNamespace); //KubeClient.CreateNamespacedPersistentVolumeClaim(PVCIncoming(RepositoryData), Settings.KubernetesNamespace); //var x = KubeClient.ReadNamespacedDeployment("repositorymanagernetuploadapi", Settings.KubernetesNamespace); //var y = x.Spec.Template.Spec.Containers[0].VolumeMounts[0]; //y.MountPath = $"/incoming/{RepositoryData.Name}"; //y.Name = $"{RepositoryData.Name}-incoming"; //x.Spec.Template.Spec.Containers[0].VolumeMounts.Add(y); //var z = x.Spec.Template.Spec.Volumes[0]; //z.Name = $"{RepositoryData.Name}-incoming"; //z.PersistentVolumeClaim.ClaimName = $"{RepositoryData.Name}-incoming"; //x.Spec.Template.Spec.Volumes.Add(z); //KubeClient.ReplaceNamespacedDeployment(x, "repositorymanagernetuploadapi", Settings.KubernetesNamespace); #endregion deploybyhand.deployProcess(deploybyhand.CreateDeployment(RepositoryData)); deploybyhand.deployProcess(deploybyhand.CreateService(RepositoryData)); deploybyhand.deployProcess(deploybyhand.CreateIngress(RepositoryData)); deploybyhand.deployProcess(deploybyhand.CreatePersistentVolumeClaim_a(RepositoryData)); deploybyhand.deployProcess(deploybyhand.CreatePersistentVolumeClaim_b(RepositoryData)); //deploybyhand.deployProcess(deploybyhand.UpdateUploadAPU(RepositoryData)); return(RepositoryData.Name); }
public string Delete([FromBody] Models.RepoData RepositoryData) { MySqlConnection con = new MySqlConnection(conBuilder.GetConnectionString(true)); string Command = $"DELETE FROM Repositories WHERE ID=@RepoID"; MySqlCommand cmd = new MySqlCommand(Command, con); cmd.Parameters.AddWithValue("@RepoID", RepositoryData.Name); con.Open(); cmd.ExecuteNonQuery(); KubeClient.DeleteNamespacedDeployment(RepositoryData.Name, Settings.KubernetesNamespace); KubeClient.DeleteNamespacedService(RepositoryData.Name, Settings.KubernetesNamespace); KubeClient.DeleteNamespacedIngress(RepositoryData.Name, Settings.KubernetesNamespace); KubeClient.DeleteNamespacedPersistentVolumeClaim(RepositoryData.Name, Settings.KubernetesNamespace); return(RepositoryData.Name); }
public static k8s.Models.V1Deployment Deployment(Models.RepoData RepoData) { k8s.Models.V1Deployment KubeObject = k8s.Yaml.LoadFromFileAsync <k8s.Models.V1Deployment>("/KubernetesObjects/Deployment.yaml").Result; KubeObject.Metadata.Name = RepoData.Name; KubeObject.Metadata.NamespaceProperty = Settings.KubernetesNamespace; KubeObject.Spec.Selector.MatchLabels["app"] = RepoData.Name; KubeObject.Spec.Template.Metadata.Labels["app"] = RepoData.Name; KubeObject.Spec.Template.Spec.InitContainers[0].Name = $"{RepoData.Name}-init"; KubeObject.Spec.Template.Spec.InitContainers[0].Image = deploybyhand.getPackageType(RepoData.PackageType, false); KubeObject.Spec.Template.Spec.InitContainers[0].Env[0].Value = ""; KubeObject.Spec.Template.Spec.Containers[0].Name = RepoData.Name; KubeObject.Spec.Template.Spec.Containers[0].Image = deploybyhand.getPackageType(RepoData.PackageType, true); KubeObject.Spec.Template.Spec.Containers[1].Name = $"{RepoData.Name}-server"; KubeObject.Spec.Template.Spec.ImagePullSecrets[0].Name = ""; KubeObject.Spec.Template.Spec.Volumes[0].PersistentVolumeClaim.ClaimName = $"{RepoData.Name}-pvc"; KubeObject.Spec.Template.Spec.Volumes[1].PersistentVolumeClaim.ClaimName = $"{RepoData.Name}-incoming-pvc"; return(KubeObject); }
public async Task OnPost() { Models.RepoData repo = new Models.RepoData(Convert.ToInt32(ID), Name, PackageType, BaseDomain); var data = new StringContent(JsonSerializer.Serialize(repo), Encoding.UTF8, "application/json"); await IndexModel.client.PutAsync($"api/modifyRepo/{ID}", data); }