Beispiel #1
0
        public async Task<OperationStatus> SaveRunbookContentAsync(RunbookModelProxy runbook, string runbookContent, RunbookType runbookType)
        {
            var longRunningOp = default(LongRunningOperationResultResponse);

            var runbookUpdate = new RunbookDraftUpdateParameters();
            runbookUpdate.Stream = runbookContent;
            runbookUpdate.Name = runbook.RunbookName;

            longRunningOp = await _client.RunbookDraft.UpdateAsync(_connectionData.AzureRMGroupName, _connectionData.AzureAutomationAccount, runbookUpdate);

            if (runbookType == RunbookType.Published)
            {
                await CheckIn(runbook);
            }

            if (longRunningOp.Status == Microsoft.Azure.OperationStatus.Failed)
                return OperationStatus.Failed;
            else if (longRunningOp.Status == Microsoft.Azure.OperationStatus.InProgress)
                return OperationStatus.InProgress;
            else if (longRunningOp.Status == Microsoft.Azure.OperationStatus.Succeeded)
                return OperationStatus.Succeeded;

            return OperationStatus.Failed;
        }
Beispiel #2
0
 public string GetBackendUrl(RunbookType runbookType, RunbookModelProxy runbook)
 {
     // Azure RM, apart from Classic, only requires the runbook name when fetching the content.
     // That's why we only return runbook name here.
     return runbookType + "|" + runbook.RunbookName;
 }
Beispiel #3
0
        public string GetBackendUrl(RunbookType runbookType, RunbookModelProxy runbook)
        {
            switch (runbookType)
            {
                case RunbookType.Draft:
                    return AzureBaseUrl + String.Format(AzureResourceUrl, _connectionData.AzureSubscriptionId, _connectionData.AzureAutomationAccount, "runbooks/" + runbook.RunbookName + "/draft/content");
                case RunbookType.Published:
                    return AzureBaseUrl + String.Format(AzureResourceUrl, _connectionData.AzureSubscriptionId, _connectionData.AzureAutomationAccount, "runbooks/" + runbook.RunbookName + "/content");
            }

            return string.Empty;
        }
Beispiel #4
0
        public async Task<OperationStatus> SaveRunbookContentAsync(RunbookModelProxy runbook, string runbookContent, RunbookType runbookType)
        {
            var result = await SendRequestAsync("runbooks/" + runbook.RunbookName.ToUrlSafeString() + "/draft/content", HttpMethod.Put, runbookContent, "text/powershell").ConfigureAwait(false);

            if (runbookType == RunbookType.Published)
            {
                await CheckIn(runbook);
            }

            return OperationStatus.Succeeded;
        }
Beispiel #5
0
        public async Task<OperationStatus> SaveRunbookContentAsync(RunbookModelProxy runbook, string runbookContent, RunbookType runbookType)
        {
            var context = GetConnection();

            var ms = new MemoryStream();
            var bytes = Encoding.UTF8.GetBytes(runbookContent);
            ms.Write(bytes, 0, bytes.Length);
            ms.Seek(0, SeekOrigin.Begin);

            var baseStream = (Stream)ms;
            var entity = (from rv in context.RunbookVersions
                            where (Guid?)rv.RunbookVersionID == (runbook.Model as SMA.Runbook).DraftRunbookVersionID
                            select rv).FirstOrDefault<RunbookVersion>();

            try
            {
                context.AttachTo("Runbooks", runbook.Model as SMA.Runbook);
            }
            catch (InvalidOperationException) { }

            context.SetSaveStream(entity, baseStream, true, "application/octet-stream", string.Empty);
            context.SaveChanges();

            if (runbookType == RunbookType.Published)
            {
                await CheckIn(runbook);
            }

            return OperationStatus.Succeeded;
        }
Beispiel #6
0
        public string GetBackendUrl(RunbookType runbookType, RunbookModelProxy runbook)
        {
            Logger.DebugFormat("GetBackendUrl(runbookType = {0}, runbook = {1})", runbookType, runbook.RunbookName);

            switch (runbookType)
            {
                case RunbookType.Draft:
                    return _connectionData.SmaConnectionUrl + "/Runbooks(guid'" + runbook.RunbookID + "')/DraftRunbookVersion/$value";
                case RunbookType.Published:
                    return _connectionData.SmaConnectionUrl + "/Runbooks(guid'" + runbook.RunbookID + "')/PublishedRunbookVersion/$value";
            }

            return string.Empty;
        }