Пример #1
0
        /// <summary>
        /// "[\"Win10.10\"]";
        /// </summary>
        public async Task <Responses.VmList> GetMoids(Requests.Moids request)
        {
            var returnObject    = new Responses.VmList();
            var executionResult = await this.Client.VSphere.GetMoid(new Dictionary <string, string>
            {
                { "object_names", request.MachineNames.ToSt2Array() }, { "object_type", "VirtualMachine" }
            });

            Log.Trace($"ExecutionResult: {executionResult}");

            try
            {
                returnObject.Id = executionResult.id;
                var j = ((JToken)executionResult.result)["result"];

                foreach (var prop in j.OfType <JProperty>())
                {
                    returnObject.Vms.Add(new Responses.Vm(prop.Value.ToString(), prop.Name, null));
                }
            }
            catch (Exception e)
            {
                Log.Error($"Object was not in expected format: {e}");
                Console.WriteLine(e);
                returnObject.Exception = e;
            }

            return(returnObject);
        }
Пример #2
0
        /// <summary>
        /// clusters get auto-formatted into st2-friendly array: "[\"domain-c9\"]"
        /// </summary>
        /// <param name="cluster"></param>
        public async Task <Responses.VmList> GetVms(IEnumerable <string> clusters)
        {
            var returnObject    = new Responses.VmList();
            var executionResult = await this.Client.VSphere.GetVms(new Dictionary <string, string> {
                { "clusters", clusters.ToSt2Array() }
            });

            Log.Trace($"ExecutionResult: {executionResult}");

            try
            {
                returnObject.Id = executionResult.id;
                var j = executionResult.result.ToString().ToJObject();

                //get vms and spit out
                foreach (var node in j["result"])
                {
                    returnObject.Vms.Add(new Responses.Vm(node["moid"], node["name"], node["runtime.powerState"]));
                }
            }
            catch (Exception e)
            {
                Log.Error($"Object was not in expected format: {e}");
                Console.WriteLine(e);
                returnObject.Exception = e;
            }

            return(returnObject);
        }
Пример #3
0
        /// <summary>
        /// clusters get auto-formatted into st2-friendly array: "[\"domain-c9\"]"
        /// </summary>
        /// <param name="cluster"></param>
        public async Task <Responses.VmList> GetVmsWithUuid(IEnumerable <string> clusters)
        {
            var returnObject    = new Responses.VmList();
            var executionResult = await _client.VSphere.GetVmsWithUuid(new Dictionary <string, object> {
                { "clusters", clusters.ToSt2Array() }
            });

            Log.Trace($"ExecutionResult: {executionResult}");

            try
            {
                returnObject.Id = executionResult.id;
                var nodes       = executionResult.result.ToString().ToJObject()["result"];
                var nodesString = nodes.ToString();
                // this check is required because of Stackstorm python 2 and 3 differences
                if (nodesString.StartsWith("dict_values("))
                {
                    nodesString = nodesString.Substring(12, nodesString.Length - 30);
                    nodes       = JArray.Parse(nodesString);
                }

                //get vms and spit out
                foreach (var node in nodes)
                {
                    returnObject.Vms.Add(new Responses.Vm(node["moid"], node["name"], node["runtime.powerState"], node["config.uuid"]));
                }
            }
            catch (Exception e)
            {
                Log.Error($"Object was not in expected format: {e}");
                Console.WriteLine(e);
                returnObject.Exception = e;
            }

            return(returnObject);
        }