示例#1
0
        public string ServicePlacement(string virtual_json_str, string physical_json_str)
        {
            ParseInput(virtual_json_str, JsonStringType.Virtual);
            ParseInput(physical_json_str, JsonStringType.Physical);

            VNG.CalculateAllRC();
            VNG.CalculateAllSAR();
            VNG.SortNodeBySAR();

            OutputMessage output = new OutputMessage();

            while (VNG.SortedVirtualNodeDict.Any())
            {
                PNG.CalculateAllRC();

                VirtualNode  vn = VNG.SortedVirtualNodeDict.Values.First();
                PhysicalNode pn = PNG.GetMaxRCNode();

                if (vn.RC <= pn.RC)
                {
                    DeployVirtualNode(vn, pn);
                    output.NodeMap.Add(vn, pn);
                    VNG.SortedVirtualNodeDict.Remove(vn.ID);
                }
                else
                {
                    output.State   = "failed";
                    output.NodeMap = null;
                    break;
                }
            }
            if (output.State != "failed")
            {
                output.State = "successful";
            }
            return(EncapsulateOutput(output));
        }