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