196 lines
6.2 KiB
C#
196 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Intel.Management.Wsman;
|
|
|
|
namespace Intel.Management.PSModule.Amt
|
|
{
|
|
|
|
public enum PasswordModel
|
|
{
|
|
Coupled=0,
|
|
Separate=1,
|
|
HashedSeparate=2
|
|
}
|
|
|
|
public class AmtSetupParameters
|
|
{
|
|
IManagedInstance _serviceObj;
|
|
public AmtSetupParameters(IManagedInstance serviceObj)
|
|
{
|
|
_serviceObj = serviceObj;
|
|
}
|
|
|
|
|
|
public string ProvisioningServerOTP
|
|
{
|
|
get
|
|
{
|
|
return _serviceObj.GetProperty("ProvisioningServerOTP").ToString();
|
|
}
|
|
}
|
|
|
|
|
|
public PasswordModel PasswordModel
|
|
{
|
|
get
|
|
{
|
|
return (PasswordModel)int.Parse(_serviceObj.GetProperty("PasswordModel").ToString());
|
|
}
|
|
}
|
|
|
|
public bool ZeroTouchConfigurationEnabled
|
|
{
|
|
get
|
|
{
|
|
return bool.Parse(_serviceObj.GetProperty("ZeroTouchConfigurationEnabled").ToString());
|
|
}
|
|
}
|
|
|
|
public string ConfigurationServerFQDN
|
|
{
|
|
get
|
|
{
|
|
return _serviceObj.GetProperty("ConfigurationServerFQDN").ToString();
|
|
}
|
|
}
|
|
|
|
public void PartialUnprovision()
|
|
{
|
|
IWsmanConnection conn = _serviceObj.Connection;
|
|
IManagedReference refToService = conn.NewReference("AMT_SetupAndConfigurationService");
|
|
|
|
|
|
IManagedInstance inputObj = refToService.CreateMethodInput("PartialUnprovision");
|
|
IManagedInstance outObj = refToService.InvokeMethod(inputObj);
|
|
|
|
switch (outObj.GetProperty("ReturnValue").ToString())
|
|
{
|
|
case "0":
|
|
break;
|
|
case "1":
|
|
AmtException.ThrowInvokeError(outObj, "Internal Error");
|
|
break;
|
|
case "16":
|
|
AmtException.ThrowInvokeError(outObj, "Not Permitted");
|
|
break;
|
|
case "2076":
|
|
AmtException.ThrowInvokeError(outObj, "Bocking Component");
|
|
break;
|
|
default:
|
|
AmtException.ThrowInvokeError(outObj);
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
class SetupService : DriveContainer
|
|
{
|
|
|
|
enum ProvisioningMode
|
|
{
|
|
Admin =1,
|
|
Client=4,
|
|
}
|
|
|
|
enum ProvisioningState
|
|
{
|
|
Pre=0,
|
|
In=1,
|
|
Post=2,
|
|
}
|
|
|
|
|
|
|
|
class SetupMode : DriveItem
|
|
{
|
|
public SetupMode(ProvisioningState value,DriveItem parent)
|
|
:base("SetupMode",value,parent)
|
|
{
|
|
}
|
|
|
|
public override void SetItem(object values, DriveProvider provider)
|
|
{
|
|
IWsmanConnection conn = ((AmtRootService)GetRoot()).Connection;
|
|
IManagedReference refToService = conn.NewReference("AMT_SetupAndConfigurationService");
|
|
|
|
if (string.Compare(values.ToString(), "Pre", true) == 0)
|
|
{
|
|
IManagedInstance inputObj = refToService.CreateMethodInput("Unprovision");
|
|
inputObj.SetProperty("ProvisioningMode", "1");
|
|
IManagedInstance outObj = refToService.InvokeMethod(inputObj);
|
|
|
|
switch (outObj.GetProperty("ReturnValue").ToString())
|
|
{
|
|
case "0":
|
|
break;
|
|
case "1":
|
|
AmtException.ThrowInvokeError(outObj, "Internal Error");
|
|
break;
|
|
case "16":
|
|
AmtException.ThrowInvokeError(outObj, "Not Permitted");
|
|
break;
|
|
case "36":
|
|
AmtException.ThrowInvokeError(outObj, "Invalid Parameter");
|
|
break;
|
|
case "2076":
|
|
AmtException.ThrowInvokeError(outObj, "Bocking Component");
|
|
break;
|
|
default:
|
|
AmtException.ThrowInvokeError(outObj);
|
|
break;
|
|
}
|
|
}
|
|
else if (string.Compare(values.ToString(), "Post", true) == 0)
|
|
{
|
|
IManagedInstance inputObj = refToService.CreateMethodInput("CommitChanges");
|
|
IManagedInstance outObj = refToService.InvokeMethod(inputObj);
|
|
switch (outObj.GetProperty("ReturnValue").ToString())
|
|
{
|
|
case "0":
|
|
break;
|
|
case "1":
|
|
AmtException.ThrowInvokeError(outObj, "Internal Error");
|
|
break;
|
|
case "38":
|
|
AmtException.ThrowInvokeError(outObj, "Flash write limit exceeded");
|
|
break;
|
|
case "2057":
|
|
AmtException.ThrowInvokeError(outObj, "Data missing");
|
|
break;
|
|
default:
|
|
AmtException.ThrowInvokeError(outObj);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public SetupService(DriveItem parent)
|
|
: base("Setup",parent)
|
|
{
|
|
}
|
|
|
|
public override void GetChildItems(ChildWriter writer)
|
|
{
|
|
IWsmanConnection conn = ((AmtRootService)GetRoot()).Connection;
|
|
IManagedInstance serviceObj= conn.NewReference("AMT_SetupAndConfigurationService").Get();
|
|
|
|
writer.Add(new DriveItem("Parameters", new AmtSetupParameters(serviceObj), this));
|
|
|
|
ProvisioningMode mode = (ProvisioningMode)int.Parse(serviceObj.GetProperty("ProvisioningMode").ToString());
|
|
writer.Add(new DriveItem("ProvisioningMode", mode, this));
|
|
ProvisioningState state = (ProvisioningState)int.Parse(serviceObj.GetProperty("ProvisioningState").ToString());
|
|
writer.Add(new SetupMode(state, this));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|