예제 #1
0
파일: CloudService.cs 프로젝트: llenroc/API
        internal async Task CreateAsync(Subscription subscription)
        {
            Contract.Requires(Subscription == null);
            Contract.Requires(subscription != null);
            Contract.Requires(!string.IsNullOrWhiteSpace(Name));
            Contract.Requires(!string.IsNullOrWhiteSpace(Label));
            Contract.Requires(Location == null || Location.Trim().Length > 0);
            Contract.Requires(AffinityGroup == null || AffinityGroup.Trim().Length > 0);
            Contract.Requires((Location == null) != (AffinityGroup == null));

            var ns      = XmlNamespaces.WindowsAzure;
            var content = new XElement(ns + "CreateHostedService",
                                       new XElement(ns + "ServiceName", Name),
                                       new XElement(ns + "Label", Label.ToBase64String()),
                                       string.IsNullOrWhiteSpace(Description) ? null : new XElement(ns + "Description", Description),
                                       string.IsNullOrWhiteSpace(Location) ? null : new XElement(ns + "Location", Location),
                                       string.IsNullOrWhiteSpace(AffinityGroup) ? null : new XElement(ns + "AffinityGroup", AffinityGroup),
                                       ExtendedProperties == null || ExtendedProperties.Count == 0 ? null :
                                       new XElement(ns + "ExtendedProperties", ExtendedProperties.Select(kv =>
                                                                                                         new XElement(ns + "ExtendedProperty",
                                                                                                                      new XElement(ns + "Name", kv.Key),
                                                                                                                      new XElement(ns + "Value", kv.Value))))
                                       );

            var hc = subscription.GetCoreRestClient20140601("services/hostedservices");
            await hc.PostAsync(content);

            Subscription = subscription;
        }
예제 #2
0
        internal async Task CreateAsync(Subscription subscription)
        {
            Contract.Requires(Subscription == null);
            Contract.Requires(subscription != null);
            Contract.Requires(!string.IsNullOrWhiteSpace(ServiceName));
            Contract.Requires(!string.IsNullOrWhiteSpace(Label));
            Contract.Requires(Location == null || Location.Trim().Length > 0);
            Contract.Requires(AffinityGroup == null || AffinityGroup.Trim().Length > 0);
            Contract.Requires((Location == null) != (AffinityGroup == null));

            var azureNamespace = XmlNamespaces.WindowsAzure;

            var content = new XElement(azureNamespace + "CreateStorageServiceInput",
                                       new XElement(azureNamespace + "ServiceName", ServiceName),
                                       string.IsNullOrWhiteSpace(Description) ? null : new XElement(azureNamespace + "Description", Description),
                                       new XElement(azureNamespace + "Label", Label.ToBase64String()),
                                       string.IsNullOrWhiteSpace(Location) ? null : new XElement(azureNamespace + "Location", Location),
                                       string.IsNullOrWhiteSpace(AffinityGroup) ? null : new XElement(azureNamespace + "AffinityGroup", AffinityGroup),
                                       new XElement(azureNamespace + "GeoReplicationEnabled", GeoReplicationEnabled ? "true" : "false"),
                                       ExtendedProperties == null || ExtendedProperties.Count == 0
                    ? new XElement(azureNamespace + "ExtendedProperties")
                    : new XElement(azureNamespace + "ExtendedProperties", ExtendedProperties.Select(kv =>
                                                                                                    new XElement(azureNamespace + "ExtendedProperty",
                                                                                                                 new XElement(azureNamespace + "Name", kv.Key),
                                                                                                                 new XElement(azureNamespace + "Value", kv.Value)))),
                                       new XElement(azureNamespace + "SecondaryReadEnabled", SecondaryReadEnabled ? "true" : "false"));

            var hc = subscription.GetCoreRestClient20131101("services/storageservices");
            await hc.PostAsync(content);

            Subscription = subscription;
        }
        public IEnumerable <AffinityGroup> GetAffinityGroupProcess(out Operation operation)
        {
            IEnumerable <AffinityGroup>      affinityGroups;
            Func <string, AffinityGroup>     func            = null;
            Func <string, AffinityGroupList> func1           = null;
            IEnumerable <AffinityGroup>      affinityGroups1 = null;

            operation = null;
            using (OperationContextScope operationContextScope = new OperationContextScope((IContextChannel)base.Channel))
            {
                try
                {
                    if (this.Name == null)
                    {
                        GetAzureAffinityGroupCommand getAzureAffinityGroupCommand = this;
                        if (func1 == null)
                        {
                            func1 = (string s) => base.Channel.ListAffinityGroups(s);
                        }
                        affinityGroups1 = ((CmdletBase <IServiceManagement>)getAzureAffinityGroupCommand).RetryCall <AffinityGroupList>(func1);
                    }
                    else
                    {
                        AffinityGroup[] affinityGroupArray  = new AffinityGroup[1];
                        AffinityGroup[] affinityGroupArray1 = affinityGroupArray;
                        int             num = 0;
                        GetAzureAffinityGroupCommand getAzureAffinityGroupCommand1 = this;
                        if (func == null)
                        {
                            func = (string s) => base.Channel.GetAffinityGroup(s, this.Name);
                        }
                        affinityGroupArray1[num] = ((CmdletBase <IServiceManagement>)getAzureAffinityGroupCommand1).RetryCall <AffinityGroup>(func);
                        affinityGroups1          = affinityGroupArray;
                    }
                    operation = base.WaitForOperation(base.CommandRuntime.ToString());
                }
                catch (CommunicationException communicationException1)
                {
                    CommunicationException communicationException = communicationException1;
                    if (communicationException as EndpointNotFoundException == null || base.IsVerbose())
                    {
                        this.WriteErrorDetails(communicationException);
                    }
                    else
                    {
                        affinityGroups = null;
                        return(affinityGroups);
                    }
                }
                return(affinityGroups1);
            }
            return(affinityGroups);
        }
예제 #4
0
 /// <summary>
 /// Connect to an Azure subscription and obtain affinity group information.
 /// </summary>
 protected override void AzureExecute()
 {
     try
     {
         AffinityGroup group = this.RetryCall(s => this.Channel.GetAffinityGroup(s, this.AffinityGroupName.Get(this.ActivityContext)));
         this.AffinityGroup.Set(this.ActivityContext, group);
     }
     catch (EndpointNotFoundException ex)
     {
         this.LogBuildMessage(ex.Message);
         this.AffinityGroup.Set(this.ActivityContext, null);
     }
 }
예제 #5
0
        internal static void LogObject(AffinityGroup affinityGroup)
        {
            if (affinityGroup == null)
                return;

            Console.WriteLine("AffinityGroup Name:{0}", affinityGroup.Name);
            if (!string.IsNullOrEmpty(affinityGroup.Label))
            {
                Console.WriteLine("AffinityGroup Label:{0}", ServiceManagementHelper.DecodeFromBase64String(affinityGroup.Label));
            }

            Console.WriteLine("AffinityGroup Description:{0}", affinityGroup.Description);
            Console.WriteLine("AffinityGroup Location:{0}", affinityGroup.Location);
            LogObject(affinityGroup.HostedServices);
            LogObject(affinityGroup.StorageServices);
        }
예제 #6
0
 public Task CreateAffinityGroupAsync(AffinityGroup affinityGroup)
 {
     return(affinityGroup.CreateAsync(this));
 }