public bool IdentifyTarget(Option opt) { if (opt != null && opt.opt == 't') { Console.WriteLine(". connecting to target: {0}", opt.val); GetHAGroup(opt); RESTClient cn = new RESTClient(this); iCRresponse <iCRdevice> resp = cn.getQuery <iCRdevice>("/mgmt/tm/cm/device"); if (resp == null) { return(false); } foreach (iCRdevice dev in resp.items) { if (dev.selfDevice) { Console.WriteLine(" [name ] : {0}", dev.hostname); Console.WriteLine(" [software ] : {0}.{1} {2}", dev.version, dev.build, dev.edition); Console.WriteLine(" [failoverState] : {0}", dev.failoverState); Console.WriteLine(" [mac address ] : {0}", dev.baseMac); Console.WriteLine(" [management ip] : {0}", dev.managementIp); Console.WriteLine(" [cm group ] : {0}", HAGroup); return(true); } } } return(false); }
public void GetHAGroup(Option opt) { if (opt != null && opt.opt == 't') { RESTClient cn = new RESTClient(this); iCRresponse <iCRdevicegroup> resp = cn.getQuery <iCRdevicegroup>("/mgmt/tm/cm/device-group"); if (resp == null) { return; } foreach (iCRdevicegroup dev in resp.items) { if (dev.type.Equals("sync-failover")) { HAGroup = dev.name; } } } }
public Target DescribeTarget(String tgt) { if (!tgt.Equals("")) { Console.WriteLine(". connecting to target: {0}", tgt); GetHAGroup(new Option('t', true, tgt)); RESTClient cn = new RESTClient(this); iCRresponse <iCRdevice> resp = cn.getQuery <iCRdevice>("/mgmt/tm/cm/device"); if (resp != null) { foreach (iCRdevice dev in resp.items) { if (dev.selfDevice) { return(new Target(dev, HAGroup)); } } } } return(null); }
public async Task upload_iRule(string name) { var fname = bdef.options["rules_location"] + "/" + name + ".tcl"; if (File.Exists(fname)) { iRuleUpload iu = new iRuleUpload(); iu.name = name; iu.partition = "Common"; iu.fullPath = "/" + iu.partition + "/" + iu.name; using (var reader = File.OpenText(fname)) { iu.apiAnonymous = await reader.ReadToEndAsync(); } var serializer = new DataContractJsonSerializer(typeof(iRuleUpload)); var stream = new MemoryStream(); serializer.WriteObject(stream, iu); stream.Position = 0; //Console.WriteLine("JSON: {0}", await (new StreamReader(stream)).ReadToEndAsync() ); /* check whether given iRule exists */ RESTClient cn = new RESTClient(chnd); bool isNew = true; iCRresponse <iCRitem> irs = cn.getQuery <iCRitem>( "/mgmt/tm/ltm/rule/~" + iu.partition + "~" + iu.name, // + "?\\$select=name,kind,generation" true ); if (irs != null && irs.kind != null) // && irs.items[0].name.Equals(iu.name)) { { isNew = false; } /* Upload iRule */ if (isNew) { iCRPostResponse resp = cn.postQuery <iCRPostResponse>( await(new StreamReader(stream)).ReadToEndAsync(), "/mgmt/tm/ltm/rule" ); if (resp.apiError != null) { Console.WriteLine("install [FAILED]\n {0}", resp.message); } else { Console.WriteLine("install [SUCCESS]"); } } else { iCRPostResponse resp = cn.putQuery <iCRPostResponse>( await(new StreamReader(stream)).ReadToEndAsync(), "/mgmt/tm/ltm/rule/" + iu.name ); if (resp.apiError != null) { Console.WriteLine("update [FAILED]\n {0}", resp.message); } else { Console.WriteLine("update [SUCCESS]"); } } } else { throw new Exception("irule not found: " + fname); } }