//[Parameter(ParameterSetName = ParameterSetContext, Mandatory = true, ValueFromPipeline = true, // HelpMessage = "An existing context that identifies the account to use for the key query.")] //[ValidateNotNull] //public BatchAccountContext Context { get; set; } /// <summary> /// Get the keys associated with the specified account. If only the account name is passed in, then /// look up its resource group and construct a new BatchAccountContext to hold everything. /// </summary> public override void ExecuteCmdlet() { string accountName = this.AccountName; string resGroupName = this.ResourceGroupName; //if (Context != null) //{ // accountName = Context.AccountName; // resGroupName = Context.ResourceGroupName; // context = Context; //} WriteVerboseWithTimestamp(Resources.GBAK_GettingKeys, accountName); if (string.IsNullOrEmpty(resGroupName)) { // use resource mgr to see if account exists and then use resource group name to do the actual lookup WriteVerboseWithTimestamp(Resources.ResGroupLookup, accountName); resGroupName = BatchClient.GetGroupForAccount(accountName); } var getResponse = BatchClient.GetAccount(resGroupName, accountName); var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(getResponse.Resource); WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); var keysResponse = BatchClient.ListKeys(resGroupName, accountName); WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); context.PrimaryAccountKey = keysResponse.PrimaryKey; context.SecondaryAccountKey = keysResponse.SecondaryKey; WriteObject(context); }
//[Parameter(ParameterSetName = ParameterSetContext, Mandatory = true, ValueFromPipeline = true, // HelpMessage = "An existing context that identifies the account to use for the key regenration.")] //[ValidateNotNull] //public BatchAccountContext Context { get; set; } public override void ExecuteCmdlet() { string accountName = this.AccountName; string resGroupName = this.ResourceGroupName; //if (Context != null) //{ // accountName = Context.AccountName; // resGroupName = Context.ResourceGroupName; // context = Context; //} if (string.IsNullOrEmpty(resGroupName)) { // use resource mgr to see if account exists and then use resource group name to do the actual lookup WriteVerboseWithTimestamp(Properties.Resources.ResGroupLookup, accountName); resGroupName = BatchClient.GetGroupForAccount(accountName); } // build a new context to put the keys into var getResponse = BatchClient.GetAccount(resGroupName, accountName); var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(getResponse.Resource); var regenResponse = BatchClient.RegenerateKeys(resGroupName, accountName, new BatchAccountRegenerateKeyParameters { KeyName = this.keyType }); context.PrimaryAccountKey = regenResponse.PrimaryKey; context.SecondaryAccountKey = regenResponse.SecondaryKey; WriteObject(context); }
//[Parameter(ParameterSetName = ParameterSetContext, Mandatory = true, ValueFromPipeline = true, // HelpMessage = "An existing context that identifies the account to use for the key query.")] //[ValidateNotNull] //public BatchAccountContext InputObject { get; set; } public override void ExecuteCmdlet() { string accountName = this.AccountName; string resourceGroupName = this.ResourceGroupName; //if (Context != null) //{ // accountName = Context.AccountName; // resourceGroupName = Context.ResourceGroupName; // context = Context; //} if (string.IsNullOrEmpty(resourceGroupName)) { // use resource mgr to see if account exists and then use resource group name to do the actual lookup WriteVerboseWithTimestamp(String.Format(Resources.ResGroupLookup, accountName)); resourceGroupName = BatchClient.GetGroupForAccount(accountName); } WriteVerboseWithTimestamp(Resources.SBA_Updating, accountName); WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); BatchAccountContext context = null; if (ReplaceTags.IsPresent) { // need to the location in order to call var getResponse = BatchClient.GetAccount(resourceGroupName, accountName); var response = BatchClient.CreateAccount(resourceGroupName, accountName, new BatchAccountCreateParameters() { Location = getResponse.Resource.Location, Tags = tagsDictionary }); context = BatchAccountContext.CrackAccountResourceToNewAccountContext(response.Resource); } else { var response = BatchClient.UpdateAccount(resourceGroupName, accountName, new BatchAccountUpdateParameters() { Tags = tagsDictionary }); context = BatchAccountContext.CrackAccountResourceToNewAccountContext(response.Resource); } WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); WriteObject(context); }
// validate the name is available. No longer supported by the CSM. Let's see if they change their minds //[Parameter(Mandatory = false, HelpMessage = "Check if account name is available.")] //public SwitchParameter WhatIf { get; set; } public override void ExecuteCmdlet() { // check if we're just validating ResourceValidationMode?validationMode = null; //if (WhatIf.IsPresent) //{ // validationMode = ResourceValidationMode.NameAvailability; // WriteVerboseWithTimestamp(Resources.NBA_NameAvailability, this.AccountName); //} //else //{ // not checking availability so see if it already exists in our subscription. This won't help if // the account exists in a different subscription. Probably should always first call with nameAvailability // to make the global check but then look at the response code to figure out if the real create should // be re-issued in order actually create it. hmm... //} // use the group lookup to validate whether account already exists. We don't care about the returned // group name nor the exception WriteVerboseWithTimestamp(Resources.NBA_LookupAccount); if (BatchClient.GetGroupForAccountNoThrow(this.AccountName) != null) { throw new CloudException(Resources.NBA_AccountAlreadyExists); } WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); var response = BatchClient.CreateAccount(this.ResourceGroupName, this.AccountName, new BatchAccountCreateParameters() { Location = this.Location, Tags = tagsDictionary, ValidationMode = validationMode }); WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(response.Resource); WriteObject(context); }
// Keeping for InputObject //[Parameter(ParameterSetName = ParameterSetContext, Mandatory = true, ValueFromPipeline = true, // HelpMessage = "An existing context that identifies the account to use for the key query.")] //[ValidateNotNull] //public BatchAccountContext InputObject { get; set; } public override void ExecuteCmdlet() { string accountName = this.AccountName; string resourceGroupName = this.ResourceGroupName; //if (Context != null) //{ // accountName = Context.AccountName; // resourceGroupName = Context.ResourceGroupName; // context = Context; //} if (string.IsNullOrEmpty(accountName)) { // no account name so we're doing some sort of list. If no resource group, then list all accounts under the // subscription otherwise all accounts in the resource group. if (resourceGroupName == null) { WriteVerboseWithTimestamp(Resources.GBA_AllAccounts); } else { WriteVerboseWithTimestamp(Resources.GBA_ResGroupAccounts, resourceGroupName); } WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); var response = BatchClient.ListAccounts(new AccountListParameters { ResourceGroupName = resourceGroupName }); WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); foreach (AccountResource resource in response.Accounts) { var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(resource); WriteObject(context); } var nextLink = response.NextLink; while (nextLink != null) { WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); response = BatchClient.ListNextAccounts(nextLink); WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); foreach (AccountResource resource in response.Accounts) { var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(resource); WriteObject(context); } nextLink = response.NextLink; } } else { if (string.IsNullOrEmpty(resourceGroupName)) { // use resource mgr to see if account exists and then use resource group name to do the actual lookup WriteVerboseWithTimestamp(Resources.ResGroupLookup, accountName); resourceGroupName = BatchClient.GetGroupForAccount(accountName); } WriteVerboseWithTimestamp(Resources.BeginMAMLCall, mamlRestName); var response = BatchClient.GetAccount(resourceGroupName, accountName); WriteVerboseWithTimestamp(Resources.EndMAMLCall, mamlRestName); var context = BatchAccountContext.CrackAccountResourceToNewAccountContext(response.Resource); WriteObject(context); } }