public static bool Start(string Email, string InstanceId, string region) { try { var item = l.Where(p => p.Email == Email.Trim()).FirstOrDefault(); LighthouseClient client = new LighthouseClient(new TencentCloud.Common.Credential() { SecretId = item.SecretId, SecretKey = item.SecretKey }, region); var rs = client.StartInstancesSync(new StartInstancesRequest() { InstanceIds = new string[] { InstanceId } }); return(true); } catch (Exception) { } return(false); }
public static List <TencentCloudServer> GetAll() { List <TencentCloudServer> list = new List <TencentCloudServer>(); foreach (var item in l) { foreach (var region in Regions) { try { LighthouseClient client = new LighthouseClient(new TencentCloud.Common.Credential() { SecretId = item.SecretId, SecretKey = item.SecretKey }, region.Key); var instances = client.DescribeInstancesSync(new DescribeInstancesRequest()); var rs = client.DescribeInstancesTrafficPackagesSync(new DescribeInstancesTrafficPackagesRequest() { }); foreach (var r in rs.InstanceTrafficPackageSet) { try { double a = r.TrafficPackageSet[0].TrafficUsed.Value; double b = r.TrafficPackageSet[0].TrafficPackageTotal.Value; int 百分比 = int.Parse(Math.Round(a / b * 100, 0).ToString()); var model = instances.InstanceSet.Where(p => p.InstanceId == r.InstanceId).FirstOrDefault(); string InstanceState = ""; switch (model.InstanceState) { case "PENDING": InstanceState = "创建中"; break; case "LAUNCH_FAILED": InstanceState = "创建失败"; break; case "RUNNING": InstanceState = "运行中"; break; case "STOPPED": InstanceState = "关机"; break; case "STARTING": InstanceState = "开机中"; break; case "STOPPING": InstanceState = "关机中"; break; case "REBOOTING": InstanceState = "重启中"; break; case "SHUTDOWN": InstanceState = "停止待销毁"; break; case "TERMINATING": InstanceState = "销毁中"; break; default: break; } list.Add(new TencentCloudServer() { BaiFenBi = 百分比, InstanceName = model.InstanceName, InstanceId = model.InstanceId, IP = model.PublicAddresses[0], TrafficPackageRemaining = int.Parse((r.TrafficPackageSet[0].TrafficPackageRemaining.Value / 1024 / 1024 / 1024).ToString()), TrafficUsed = int.Parse((r.TrafficPackageSet[0].TrafficUsed.Value / 1024 / 1024 / 1024).ToString()), TrafficPackageTotal = int.Parse((r.TrafficPackageSet[0].TrafficPackageTotal.Value / 1024 / 1024 / 1024).ToString()), InstanceState = InstanceState, Email = item.Email, Region = region, ExpireTime = DateTime.Parse(model.ExpiredTime) }); } catch (Exception) { } } } catch (Exception) { } } } return(list); }
public int Run(IEnumerable <string> args) { LighthouseClient GetClient(Uri target) { var networkProvider = TypeFactory.Create <INetworkProvider>(); var client = new LighthouseClient(target, networkProvider); client.AddLogger(ConsoleWrite); return(client); } var result = Parser.Default.ParseArguments <RunOptions, InspectOptions, StopOptions, StoreOptions, RetrieveOptions, ConfigureOptions>(args) .MapResult( (RunOptions run) => { if (run.IsFileMode) { var fileContents = File.ReadAllText(run.File); var config = YamlUtil.ParseYaml <LighthouseRunConfig>(fileContents); // load resources first foreach (var resource in config.Resources) { } // then launch apps foreach (var app in config.Applications) { } } else { if (run.Where != null) { var client = GetClient(run.Where.ToUri()); // make a connection to the other server var response = client.MakeRequest <RemoteAppRunRequest, RemoteAppRunHandle>(new RemoteAppRunRequest(run.What)).GetAwaiter().GetResult(); ConsoleWrite($"Request {response?.Status ?? "no response"} (ID: {response?.Id ?? "no ID"})"); } else { Type appType = LighthouseFetcher.Fetch(run.What); if (appType == null) { throw new ApplicationException($"Can't find app with name: {run.What}"); } // start a lighthouse server locally, and have it run the task var server = new LighthouseServer(); server.AddLogger(ConsoleWrite); server.Launch(appType).GetAwaiter().GetResult(); } } return(0); }, (InspectOptions inspect) => { var client = GetClient(inspect.Where.ToUri()); if (inspect.Where == null) { throw new Exception("Must include Where to inspect."); } if (inspect.What == null) { var response = client.MakeRequest <StatusRequest, StatusResponse>(new StatusRequest()).GetAwaiter().GetResult(); ConsoleWrite(response.ToString()); } else { var response = client.MakeRequest <InspectRequest, InspectResponse>( new InspectRequest { What = inspect.What } ).GetAwaiter().GetResult(); ConsoleWrite(string.Join(Environment.NewLine, response.RawResponse)); } return(0); }, (StopOptions stop) => { if (stop.What == null || stop.Where == null) { throw new Exception("Stop what and where?"); } var client = GetClient(stop.Where.ToUri()); var response = client.MakeRequest <StopRequest, bool>( new StopRequest { What = stop.What } ).GetAwaiter().GetResult(); ConsoleWrite(response ? $"{stop.What} stopped on {stop.Where}" : "failed"); return(0); }, (StoreOptions store) => { if (store.What == null || store.Where == null) { throw new Exception("Stop what and where?"); } var client = GetClient(store.Where.ToUri()); var deserialize = store.What.DeserializeFromJSON <WarehouseStoreRequest>(); var response = client.MakeRequest <WarehouseStoreRequest, bool>( new WarehouseStoreRequest { Key = deserialize.Key, Value = deserialize.Value } ).GetAwaiter().GetResult(); ConsoleWrite(response ? "stored" : "failed"); return(0); }, (RetrieveOptions retrieve) => { if (retrieve.What == null || retrieve.Where == null) { throw new Exception("Stop what and where?"); } var client = GetClient(retrieve.Where.ToUri()); var deserialize = retrieve.What.DeserializeFromJSON <WarehouseRetrieveRequest>(); var response = client.MakeRequest <WarehouseRetrieveRequest, WarehouseRetrieveResponse>( new WarehouseRetrieveRequest { Key = deserialize.Key } ).GetAwaiter().GetResult(); ConsoleWrite(response.Value ?? string.Empty); return(0); }, (ConfigureOptions configure) => { if (configure.What == null || configure.Where == null || configure.How == null) { throw new Exception("Configure what,where, and how?"); } var client = GetClient(configure.Where.ToUri()); if (configure.What == "resource") { var request = configure.How.DeserializeFromJSON <ResourceRequest>(); var response = client.MakeRequest <ResourceRequest, ResourceResponse>(request).GetAwaiter().GetResult(); foreach (var val in response.ActionsTaken) { ConsoleWrite(val); } // inspect the event stream for bound events ??? return(0); } ConsoleWrite($"unsupported configure target {configure.What}"); return(-1); }, errs => { foreach (var error in errs) { ConsoleWrite(error.ToString()); } throw new Exception(string.Join(",", errs)); }); return(0); }