public override async Task <DeleteVolumeResponse> DeleteVolume( DeleteVolumeRequest request, ServerCallContext context) { DeleteVolumeResponse response = new DeleteVolumeResponse(); var id = request.VolumeId; using (logger.BeginKeyValueScope("volume_id", id)) using (var _s = logger.StepInformation("{0}", nameof(DeleteVolume))) { try { var ctx = new Helpers.Azure.DataProviderContext <ManagedDiskConfig>(); await contextConfig.Provide(ctx); var actx = new AzureAuthConfigProviderContext { Secrets = request.ControllerDeleteSecrets }; var provisionService = provisionServiceFactory.Create(provider.Provide(actx), ctx.Result.SubscriptionId); await provisionService.DeleteAsync(AzureResourceInnerHelper.CreateForDisk( ctx.Result.SubscriptionId, ctx.Result.ResourceGroupName, id)); } catch (Exception ex) { logger.LogError(ex, "Exception in DeleteVolume"); throw new RpcException(new Status(StatusCode.Internal, ex.Message)); } _s.Commit(); } return(response); }
public override async Task <ControllerUnpublishVolumeResponse> ControllerUnpublishVolume(ControllerUnpublishVolumeRequest request, ServerCallContext context) { var response = new ControllerUnpublishVolumeResponse(); var id = request.VolumeId; using (logger.BeginKeyValueScope("volume_id", id)) using (var _s = logger.StepInformation("{0}", nameof(ControllerUnpublishVolume))) { try { var ctx = new Helpers.Azure.DataProviderContext <ManagedDiskConfig>(); await contextConfig.Provide(ctx); var actx = new AzureAuthConfigProviderContext { Secrets = request.ControllerUnpublishSecrets }; var setupService = setupServiceFactory.Create(provider.Provide(actx), ctx.Result.SubscriptionId); var vmRid = ResourceId.FromString(request.NodeId); var diskId = ResourceId.FromString(id); await setupService.RemoveAsync(vmRid, diskId); } catch (Exception ex) { logger.LogError(ex, "Exception in ControllerUnpublishVolume"); throw new RpcException(new Status(StatusCode.Internal, ex.Message)); } _s.Commit(); } return(response); }
public ServiceClientCredentials Provide(AzureAuthConfigProviderContext ctx) { azureSpProvider.Provide(ctx); return(SdkContext.AzureCredentialsFactory.FromServicePrincipal( ctx.Result.ClientId, ctx.Result.ClientSecret, ctx.Result.TenantId, AzureEnvironment.AzureGlobalCloud)); }
public override async Task <CreateVolumeResponse> CreateVolume( CreateVolumeRequest request, ServerCallContext context) { CreateVolumeResponse response = new CreateVolumeResponse(); if (string.IsNullOrEmpty(request.Name)) { logger.LogDebug("Validation fail"); throw new RpcException(new Status(StatusCode.InvalidArgument, "Name cannot be empty")); } using (var _s = logger.StepInformation("{0}, name: {1}", nameof(CreateVolume), request.Name)) { try { var ctx = new DataProviderContext <ManagedDiskConfig>(); await contextConfig.Provide(ctx); var actx = new AzureAuthConfigProviderContext { Secrets = request.ControllerCreateSecrets }; var provisionService = provisionServiceFactory.Create( provider.Provide(actx), ctx.Result.SubscriptionId); var sizeGiB = byteUnitConverter.ToGibibyte( request.CapacityRange == null ? 1 : request.CapacityRange.RequiredBytes); var md = await provisionService.CreateAsync( ctx.Result.SubscriptionId, ctx.Result.ResourceGroupName, request.Name, ctx.Result.Location, sizeGiB); response.Volume = new Volume { Id = md.Id.Id, CapacityBytes = byteUnitConverter.FromGigibyte(md.Size), }; } catch (Exception ex) { logger.LogError(ex, "Exception in CreateAsync"); throw new RpcException(new Status(StatusCode.Internal, ex.Message)); } _s.Commit(); } return(response); }
public Task Provide(AzureAuthConfigProviderContext context) { context.Result = new AzureAuthConfig { TenantId = Environment.GetEnvironmentVariable("DEFAULT_TENANT_ID"), ClientId = Environment.GetEnvironmentVariable("DEFAULT_CLIENT_ID"), ClientSecret = Environment.GetEnvironmentVariable("DEFAULT_CLIENT_SECRET"), }; return(Task.CompletedTask); }