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));
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
    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);
        }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 7
0
    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);
        }
Ejemplo n.º 9
0
        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;
        }
Ejemplo n.º 10
0
    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);
    }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 15
0
 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);
 }