Beispiel #1
0
 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);
 }
Beispiel #2
0
 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;
             }
         }
     }
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
        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);
            }
        }