ConfigItemUpdate#

NAME#

Kernel::System::ProcessManagement::TransitionAction::ConfigItemUpdate - A module to deploy CI state

SYNOPSIS#

All ConfigItemUpdate functions.

PUBLIC INTERFACE#

new()#

create an object. Do not use it directly, instead use:

my $ConfigItemUpdateObject = $Kernel::OM->Get('Kernel::System::ProcessManagement::TransitionAction::ConfigItemUpdate');

Run()#

Runs TransitionAction ConfigItemUpdate. This function sets, updates or deletes values (of attribute) of given ConfigItemID (ConfigItemNumber).

my $Success = $ConfigItemUpdateObject->Run(
    UserID                   => 123,

    # Ticket contains the result of TicketGet including dynamic fields
    Ticket                   => \%Ticket,   # required

    ProcessEntityID          => 'P123',
    ActivityEntityID         => 'A123',
    TransitionEntityID       => 'T123',
    TransitionActionEntityID => 'TA123',

    # Config is the hash stored in a Process::TransitionAction's config key
    Config                   => {
        ConfigItemID    => 123,             # you can also use multiple ConfigItemIDs separated by commas (123, 234, 345)
        or
        ConfigItemNumber => 123,            # you can also use multiple ConfigItemNumbers separated by commas (123, 234, 345)
        UserID           => 123,            # optional, to override the UserID from the logged user

        $Key             => $Value,         # required
    }
);

Returns:

my $Success = 1;     # 0

ConfigItemAttributesSet()#

Deploys new CI attributes - creates a new CI Version.

my $Success = $ConfigItemUpdateObject->ConfigItemAttributesSet(
    ConfigItemID               => 1,
    or
    ConfigItemNumber           => 1,

    # default ConfigItem data
    DeplStateName              => 'Production',
    InciStateName              => 'Operational',

    # StringifiedXMLData
    'CPU::'                    => 'NEW-CPU, NEW-CPU2',
    'HardDisk::1'              => 'NEW-HardDisk1',
    'HardDisk::1::Capacity::1' => '12',
    'HardDisk::2'              => 'NEW-HardDisk2',
    'HardDisk::2::Capacity::1' => '44',
    'Ram::1'                   => 'NEW-Ram',
    'Ram::2'                   => 'NEW-Ram2',
    'Vendor::1'                => 'NEW-Vendor',

    UserID                     => 123,
);

Returns:

my $Success = 1;

ConfigItemAttributesGet()#

Returns a valid data structure for a new ConfigItem version.

my %ConfigItemParams = $ConfigItemUpdateObject->ConfigItemAttributesGet(
    ConfigItemID => 1,
    or
    ConfigItemNumber => 1,

    # default ConfigItem data
    DeplStateName              => 'Production',
    InciStateName              => 'Operational',

    # StringifiedXMLData
    'CPU::'                    => 'NEW-CPU, NEW-CPU2',
    'HardDisk::1'              => 'NEW-HardDisk1',
    'HardDisk::1::Capacity::1' => '12',
    'HardDisk::2'              => 'NEW-HardDisk2',
    'HardDisk::2::Capacity::1' => '44',
    'Ram::1'                   => 'NEW-Ram',
    'Ram::2'                   => 'NEW-Ram2',
    'Vendor'                   => 'NEW-Vendor',
    'Description::1'           => '<OTRS_TICKET_Title>',
    'SerialNumber::1'          => '<OTRS_Ticket_DynamicField_SerialNumber>',

    UserID                     => 123,
);

Returns:

my %ConfigItemParams = (
    ConfigItemID  => 1,
    DeplStateName => 'Production',
    InciStateName => 'Operational',
    XMLData => {
        'CPU' => [
            {
                'Content' => 'NEW-CPU'
            },
            {
                'Content' => 'NEW-CPU2'
            }
        ],
        'HardDisk' => [
            {
                'Capacity' => [
                    {
                        'Content' => '12'
                    }
                ],
                'Content' => 'NEW-HardDisk1'
            },
            {
                'Capacity' => [
                    {
                        'Content' => '44'
                    }
                ],
                'Content' => 'NEW-HardDisk2'
            }
        ],
        [...],
    }
);

XMLData2StringifiedXMLData()#

Converts XMLdata structure (used by $ZnunyHelperObject => _ITSMConfigItemVersionAdd()) to stringified XMLData ‘CPU::1’. This function should be integrated into Znuny::ITSM.

my $StringifiedXMLData = $ConfigItemUpdateObject->XMLData2StringifiedXMLData(
    Prefix  => $Prefix,
    XMLData => {
        'NIC' => [
            {
                'Content'    => 'NicName1',
                'IPoverDHCP' => [
                    {
                        'Content' => 'Yes',
                    }
                ],
                'IPAddress' => [
                    {
                        'Content' => '123',
                    },
                ],
            },
            {
                'Content'   => 'NicName2',
                'IPoverDHCP' => [
                    {
                        'Content' => 'No',
                    }
                ],
                'IPAddress' => [
                    {
                        'Content' => '456',
                    }
                ],
            }
        ],
    }
);

Returns:

my $StringifiedXMLData = {
    NIC::1                => 'NicName1',
    NIC::1::IPAddress::1  => '123',
    NIC::1::IPoverDHCP::1 => 'Yes',
    NIC::2                => 'NicName2',
    NIC::2::IPAddress::1  => '456',
    NIC::2::IPoverDHCP::1 => 'No',
};

StringifiedXMLData2XMLData()#

Converts stringified XMLData ‘CPU::1’ for config-item into XMLdata structure (used by $ZnunyHelperObject => _ITSMConfigItemVersionAdd()). This function should be integrated into Znuny::ITSM.

my $XMLData = $ConfigItemUpdateObject->StringifiedXMLData2XMLData(

    # new stringified XMLData for this ConfigItem
    StringifiedXMLData => {
        'CPU::1'                   => 'NEW-CPU',
        'CPU::2'                   => 'NEW-CPU2',
        'HardDisk::1'              => 'NEW-HardDisk1',
        'HardDisk::1::Capacity::1' => '12',
        'HardDisk::2'              => 'NEW-HardDisk2',
        'HardDisk::2::Capacity::1' => '44',
        'Ram::1'                   => 'NEW-Ram',
        'Ram::2'                   => 'NEW-Ram2',
        'Vendor::1'                => 'NEW-Vendor',
    }

    # this is the definition  of this Class $Definition->{DefinitionRef},
    XMLDefinition => [
        {
            'Key' => 'NIC',
            'Input' => {
                   'MaxLength' => 100,
                   'Size'      => 50,
                   'Type'      => 'Text',
                   'Required'  => 1
            },
            'CountDefault' => 1,
            'CountMin'     => 0,
            'CountMax'     => 10,
            'Sub'          => [
                {
                    'CountMin' => 1,
                    'CountDefault' => 1,
                    'Name' => 'IP over DHCP',
                    'CountMax' => 1,
                    'Input' => {
                        'Type'        => 'GeneralCatalog',
                        'Class'       => 'ITSM::ConfigItem::YesNo',
                        'Required'    => 1,
                        'Translation' => 1
                    },
                    'Key' => 'IPoverDHCP'
                },
                {
                    'Searchable'   => 1,
                    'CountMin'     => 0,
                    'CountDefault' => 0,
                    'CountMax'     => 20,
                    'Name'         => 'IP Address',
                    'Key'          => 'IPAddress',
                    'Input'        => {
                        'Type'         => 'Text',
                        'Required'     => 1,
                        'Size'         => 40,
                        'MaxLength'    => 40,
                    }
                }
            ],
            'Name' => 'Network Adapter'
        },
    ],

    # original stringified XMLData from the latest version of this ConfigItem
    OriginalStringifiedXMLData => {
        'CPU::1'                   => 'CPU',
        'CPU::2'                   => 'CPU2',
        'HardDisk::1'              => 'HardDisk1',
        'HardDisk::1::Capacity::1' => '12',
        'HardDisk::2'              => 'HardDisk2',
        'HardDisk::2::Capacity::1' => '44',
        'Ram::1'                   => 'Ram',
        'Ram::2'                   => 'Ram2',
        'Vendor::1'                => 'Vendor',
    },
    Prefix       => $Prefix,
);

Returns:

$XMLData = {
    'CPU' => [
        {
            'Content' => 'CPU'
        },
        {
            'Content' => 'CPU2'
        }
    ],
    'Ram' => [
        {
            'Content' => 'Ram'
        },
        {
            'Content' => 'Ram2'
        }
    ],
    [...]
};