/// <summary> /// Extracts bundle information from a specific catalog /// </summary> /// <param name="cpbmClient"></param> /// <param name="catalogUuid">Optional. Uuid for specific tenant [check]/param> /// <returns></returns> public static List <ProductBundle> GetBundles(Citrix.CPBM.Client.Sample.Client cpbmClient, Guid uuid) { logger.Debug("Ask CPBM for the productBundleRevisions object at /account/catalog"); // Get the Catalog // e.g. /account/catalogs APIRequest request = new APIRequest("/account/catalog", "GET"); if (!uuid.Equals(Guid.Empty)) { logger.Debug("productBundleRevisions for specific UUID " + uuid.ToString()); request = new APIRequest("/account/" + uuid + "/catalog", "GET"); } // request.SetParameterValue("expand", "productBundleRevisions,productBundle.entitlements"); string expandSpec = "productBundleRevisions.entitlements.product," + "productBundleRevisions.provisionConstraints," + "productBundleRevisions.productBundle," + "productBundleRevisions.rateCardCharges.rateCardComponent.rateCard," + "productRevisions.mediationRules.mediationRuleDiscriminators.serviceDiscriminator"; request.SetParameterValue("expand", expandSpec); // Default position is to return a List of length zero. List <ProductBundle> bundles = new List <ProductBundle>(); try { logger.Debug("CPBM request " + request.ToJSON()); dynamic result = cpbmClient.SendRequest(request); bundles = ParseJson(result); } catch (Exception ex) { String errMsg = "Exception retrieving bundle: " + ex.Message + ex.StackTrace; logger.Error(errMsg, ex); } return(bundles); }
public static bool Delete(Citrix.CPBM.Client.Sample.Client clientSession, Subscription oldSub) { // Creation happens when you POST to /subscriptions APIRequest request = new APIRequest("/subscriptions/" + oldSub.Uuid.ToString(), "DELETE"); bool success = false; // Q: What is the purpose of entitlements? try { dynamic result = clientSession.SendRequest(request); success = true; } catch (CPBMException ex) { String errMsg = "Exception deleting subscriptions: " + ex.Message + ex.StackTrace; logger.Error(errMsg, ex); } return(success); }
public static Subscription Create(Citrix.CPBM.Client.Sample.Client clientSession, string serviceInstance, string productbundleid, string hostName, string catalogName) { Subscription newSub = null; // Creation happens when you POST to /subscriptions APIRequest request = new APIRequest("/subscriptions", "POST"); request.SetParameterValue("serviceinstanceuuid", serviceInstance); // Optional for our purposes, but for completeness it helps to know that the options are // "VirtualMachine","Volume","Network" request.SetParameterValue("resourcetype", "VirtualMachine"); if (string.IsNullOrEmpty(hostName)) { hostName = String.Empty; } // configurationdata field is required. Can be left as empty, but we add but it can be left as an empty JSON string. string jsonConfig = @"{""hostName"":""" + hostName + @"""}"; // string jsonConfig2 = @"{""displayName"":""" + catalogName + @"""}"; // string jsonConfig = @"{""hostName"":""" + hostName + @""", ""displayName"":""" + catalogName + @"""}"; // assert //dynamic confgTest = JsonConvert.DeserializeObject(jsonConfig); //if (!hostName.Equals((string)confgTest.hostName) || !catalogName.Equals((string)confgTest.displayName)) //{ // var errMsg = "jsonConfig should be JSON formatted text."; // var ex = new ArgumentException(errMsg); // logger.Error(errMsg, ex); // throw ex; //} request.SetParameterValue("configurationdata", jsonConfig); // request.SetParameterValue("configurationdata", jsonConfig2); // request.SetParameterValue("provision", "false"); // bill for items already created, i.e. don't have CPBM provision // how will I cross reference a productbundle and it's "productbundleid" ? // TBA request.SetParameterValue("productbundleid", productbundleid);// "CCP-Dixon_MEDIUM_INSTANCE"); // Q: What is the purpose of entitlements? try { dynamic result = clientSession.SendRequest(request); dynamic newSubJson = result.subscription; string dbgTmp = result.ToString(); logger.Debug("Create subscription returned: " + dbgTmp); newSub = ParseSubscriptionJson(newSubJson); } catch (CPBMException ex) { String errMsg = "Exception creating subscription: " + ex.Message + ex.StackTrace; logger.Error(errMsg, ex); } // Cross reference? return(newSub); }
/// <summary> /// Extracts bundle information, assumes cpbmClient has sufficient access rights. /// </summary> /// <param name="cpbmClient"></param> /// <returns></returns> public static List <ProductBundle> GetBundles(Citrix.CPBM.Client.Sample.Client cpbmClient) { return(GetBundles(cpbmClient, Guid.Empty)); }