Skip to content

Commit

Permalink
Release 2.0.7 - Add SLA ServiceInstance Relations
Browse files Browse the repository at this point in the history
  • Loading branch information
klaasvandeweerdt committed Dec 31, 2022
1 parent 5eb317b commit f670fa6
Show file tree
Hide file tree
Showing 5 changed files with 187 additions and 3 deletions.
35 changes: 35 additions & 0 deletions Source/Sdk4me.Tests/ServiceLevelAgreementServiceInstancesTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

namespace Sdk4me.Tests
{
[TestClass]
public class ServiceLevelAgreementServiceInstancesTest
{
[TestMethod]
public void Get()
{
Sdk4meClient client = Client.Get();
ServiceLevelAgreement sla = client.ServiceLevelAgreements.Get(313);
Assert.IsNotNull(sla);

List<ServiceLevelAgreementServiceInstanceRelation> relations = client.ServiceLevelAgreements.GetServiceInstances(sla, "*");
Assert.IsNotNull(relations);

ServiceLevelAgreementServiceInstanceRelation relation = relations.Where(x => x.ServiceInstance.ID == 87).FirstOrDefault();
Assert.IsNotNull(relation);

bool result = client.ServiceLevelAgreements.DeleteServiceInstance(sla, relation);
Assert.AreEqual(true, result);

relation = client.ServiceLevelAgreements.AddServiceInstance(sla, new ServiceLevelAgreementServiceInstanceRelation()
{
ImpactRelation = ServiceLevelAgreementServiceInstanceRelationStatus.Down,
ServiceInstance = new ServiceInstance() { ID = 87 }
});
Assert.IsNotNull(relation);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
using Newtonsoft.Json;
using System;

namespace Sdk4me
{
/// <summary>
/// A 4me <see href="https://developer.4me.com/v1/service_level_agreements/service_instances/">service instance relation</see> object.
/// </summary>
public class ServiceLevelAgreementServiceInstanceRelation : BaseItem
{
private ServiceLevelAgreementServiceInstanceRelationStatus impactRelation;
private ServiceInstance serviceInstance;

#region Created at (override)

/// <summary>
/// The creation date and time; which is obsolete for this object.
/// </summary>
[JsonProperty("created_at"), Sdk4meIgnoreInFieldSelection()]
public override DateTime? CreatedAt
{
get => base.CreatedAt;
internal set => base.CreatedAt = null;
}

#endregion

#region Impact relation

/// <summary>
/// The type of the relation.
/// </summary>
[JsonProperty("impact_relation"), Sdk4meIgnoreInFieldSelection()]
public ServiceLevelAgreementServiceInstanceRelationStatus ImpactRelation
{
get => impactRelation;
set => impactRelation = SetValue("impact_relation", impactRelation, value);
}

#endregion

#region Service instance

/// <summary>
/// The linked service instance.
/// </summary>
[JsonProperty("service_instance"), Sdk4meIgnoreInFieldSelection()]
public ServiceInstance ServiceInstance
{
get => serviceInstance;
set => serviceInstance = SetValue("service_instance_id", serviceInstance, value);
}

[JsonProperty("service_instance_id"), Sdk4meIgnoreInFieldSelection()]
internal long? ServiceInstanceID => serviceInstance?.ID;

#endregion

#region Updated at (override)

/// <summary>
/// The updated date and time; which is obsolete for this object.
/// </summary>
[JsonProperty("updated_at"), Sdk4meIgnoreInFieldSelection()]
public override DateTime? UpdatedAt
{
get => base.UpdatedAt;
internal set => base.UpdatedAt = null;
}

#endregion
}
}
17 changes: 17 additions & 0 deletions Source/Sdk4me/Enumerators/Enumerators.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2202,6 +2202,23 @@ public enum ServiceLevelAgreementStatus
Expired
}

/// <summary>
/// A 4me service level agreement - service level relation status.
/// </summary>
public enum ServiceLevelAgreementServiceInstanceRelationStatus
{
/// <summary>
/// Service Instance of SLA is Down or Degraded.
/// </summary>
[EnumMember(Value = "degraded")]
Degraded = 1,
/// <summary>
/// Service Instance of SLA is Down.
/// </summary>
[EnumMember(Value = "down")]
Down
}

#endregion

#region Service offering
Expand Down
58 changes: 58 additions & 0 deletions Source/Sdk4me/Handlers/ServiceLevelAgreementHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,64 @@ public bool RemoveAllPeople(ServiceLevelAgreement serviceLevelAgreement)

#endregion

#region service instances

/// <summary>
/// Get all parent service instances of a service level agreement.
/// </summary>
/// <param name="serviceLevelAgreement">The service level agreement.</param>
/// <param name="fieldNames">The field names to return.</param>
/// <returns>A collection of people.</returns>
public List<ServiceLevelAgreementServiceInstanceRelation> GetServiceInstances(ServiceLevelAgreement serviceLevelAgreement, params string[] fieldNames)
{
return GetChildHandler<ServiceLevelAgreementServiceInstanceRelation>(serviceLevelAgreement, "service_instances").Get(fieldNames);
}

/// <summary>
/// Add a service instance relation.
/// </summary>
/// <param name="serviceLevelAgreement">The service level agreement.</param>
/// <param name="serviceLevelAgreementServiceInstanceRelation">The service instance relation.</param>
/// <returns>True in case of success; otherwise false.</returns>
public ServiceLevelAgreementServiceInstanceRelation AddServiceInstance(ServiceLevelAgreement serviceLevelAgreement, ServiceLevelAgreementServiceInstanceRelation serviceLevelAgreementServiceInstanceRelation)
{
return GetChildHandler<ServiceLevelAgreementServiceInstanceRelation>(serviceLevelAgreement, "service_instances").Insert(serviceLevelAgreementServiceInstanceRelation);
}

/// <summary>
/// Update a service instance relation.
/// </summary>
/// <param name="serviceLevelAgreement">The service level agreement.</param>
/// <param name="serviceLevelAgreementServiceInstanceRelation">The service instance relation.</param>
/// <returns>True in case of success; otherwise false.</returns>
public ServiceLevelAgreementServiceInstanceRelation UpdateServiceInstance(ServiceLevelAgreement serviceLevelAgreement, ServiceLevelAgreementServiceInstanceRelation serviceLevelAgreementServiceInstanceRelation)
{
return GetChildHandler<ServiceLevelAgreementServiceInstanceRelation>(serviceLevelAgreement, "service_instances").Update(serviceLevelAgreementServiceInstanceRelation);
}

/// <summary>
/// Delete a service instance relation.
/// </summary>
/// <param name="serviceLevelAgreement">The service level agreement.</param>
/// <param name="serviceLevelAgreementServiceInstanceRelation">The service instance relation.</param>
/// <returns>True in case of success; otherwise false.</returns>
public bool DeleteServiceInstance(ServiceLevelAgreement serviceLevelAgreement, ServiceLevelAgreementServiceInstanceRelation serviceLevelAgreementServiceInstanceRelation)
{
return GetChildHandler<ServiceLevelAgreementServiceInstanceRelation>(serviceLevelAgreement, "service_instances").Delete(serviceLevelAgreementServiceInstanceRelation);
}

/// <summary>
/// Delete all service instance relations.
/// </summary>
/// <param name="serviceLevelAgreement">The service level agreement.</param>
/// <returns>True in case of success; otherwise false.</returns>
public bool DeleteServiceInstances(ServiceLevelAgreement serviceLevelAgreement)
{
return GetChildHandler<ServiceLevelAgreementServiceInstanceRelation>(serviceLevelAgreement, "service_instances").DeleteAll();
}

#endregion

#region Sites

/// <summary>
Expand Down
7 changes: 4 additions & 3 deletions Source/Sdk4me/Sdk4me.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@

<PropertyGroup>
<LangVersion>7.3</LangVersion>
<AssemblyVersion>2.0.6</AssemblyVersion>
<FileVersion>2.0.6</FileVersion>
<AssemblyVersion>2.0.7</AssemblyVersion>
<FileVersion>2.0.7</FileVersion>
<AnalysisLevel>6.0</AnalysisLevel>
<Authors>Klaas Vandeweerdt</Authors>
<Description>A .NET client for accessing the 4me v1 REST API</Description>
<Copyright>MIT License</Copyright>
<Version>2.0.6</Version>
<Version>2.0.7</Version>
<ProduceReferenceAssembly>True</ProduceReferenceAssembly>
<RepositoryType>git</RepositoryType>
<PackageIcon>LogoDark128x218.png</PackageIcon>
Expand All @@ -39,6 +39,7 @@
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<Title>Sdk4me</Title>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net6.0|AnyCPU'">
Expand Down

0 comments on commit f670fa6

Please sign in to comment.