Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm using perf-view-create to create a new perf view in DFM (5.0.2P1) via the SDK. I supply this XML:
$VAR1 = bless( {
'content' => '',
'name' => 'perf-view-create',
'children' => [
bless( {
'content' => '',
'name' => 'view',
'children' => [
bless( {
'content' => '',
'name' => 'perf-view',
'children' => [
bless( {
'content' => 'Flash Cache lnn99 (extended)',
'name' => 'view-name',
'children' => [],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' );
But get an error back that looks like this:
$VAR1 = bless( {
'content' => '',
'name' => 'results',
'children' => [],
'attrvals' => [
'charts not supplied',
'13115',
'failed'
],
'attrkeys' => [
'reason',
'errno',
'status'
]
}, 'NetAppApi::NaElement' );
This is strange because the SDK documentation says that 'charts' is optional in perf-view-create.
charts | perf-chart[] optional | The charts (graphs) appearing in this view. |
I don't want to specify any charts at this part of my code, I want to create an empty view that I will subsequently add multiple charts to.
Is this a bug?
6 REPLIES 6
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
note - I seem to be able to do the equivalent operation from the CLI (I can create an empty view):
algarch@npias10 $ /var/hostlinks/NTAPdfm/wrappers/dfm perf view create "Flash Cache lnn30 (extended)"
View Flash Cache lnn30 (extended) created successfully.
And add an empty chart to it:
algarch@npias10 $ /var/hostlinks/NTAPdfm/wrappers/dfm perf view chart add "Flash Cache lnn30 (extended)" "Flash Cache Hit Percent"
Successfully added chart Flash Cache Hit Percent to view Flash Cache lnn30 (extended).
To which I can then add a counter:
/var/hostlinks/NTAPdfm/wrappers/dfm perf view counter add -n lnn30oznp1 -i ec0 "Flash Cache lnn30 (extended)" "Flash Cache Hit Percent" ext_cache_obj:hit_percent
Counter added successfully.
Which is the sequence that I am trying to acheive via the API. I would expect the functionality of the API to be as capable as the CLI. can anyone advise on how to do this via the API?
Thanks,
Chris
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Chris,
The cli in the backend calls the API only. Run the cli and do a tail of the audit.log file to see how the apis are used.
Regards
adai
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the advice.
I called the CLI command "dfm perf view create test" and the audit log entry is:
Jun 27 06:50:29 [dfm:NOTIC]: root:API:in:[127.0.0.1]:Create a performance view:<perf-view-create> <view> <perf-view> <view-name>test</view-name> <are-events-shown>false</are-events-shown> <view-type>custom_view_instances</view-type> <charts/> </perf-view> </view> </perf-view-create>
Jun 27 06:50:29 [perf:NOTIC]: root:CMD:in:[127.0.0.1]:perf view create test:View test created successfully.<BR>
I'm puzzled as to why the <charts/> mark up is included. This does't look like well formed XML to me. Is the CLI working around a bug with the API? <charts/> is not somthing I will be able to reproduce with the standard SDK methods.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Chris,
I spoke to one of the long timer of Performance Advisor on the same.
- The XML of <charts/> is correct. It is same as <charts>value</charts>
- Also the SDK documentation is incorrect. Charts is not a optional element.
Regards
adai
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
So you are using <charts/> as an empty element tag. The documentation says that charts is an optional element, but you are saying that is required as an empty element tag.
However, I do not see a way to add an empty element tag to the XML using the SDK methods. If I use this:
my $charts = NetAppApi::NaElement->new("charts");
my $perf_view = NetAppApi::NaElement->new("perf-view");
$perf_view->child_add_string("view-name", $name);
$perf_view->child_add($charts);
my $view = NetAppApi::NaElement->new("view");
$view->child_add($perf_view);
my $create = NetAppApi::NaElement->new("perf-view-create");
$create->child_add($view)
To submit the XML:
$VAR1 = bless( {
'content' => '',
'name' => 'perf-view-create',
'children' => [
bless( {
'content' => '',
'name' => 'view',
'children' => [
bless( {
'content' => '',
'name' => 'perf-view',
'children' => [
bless( {
'content' => 'Flash Cache lnn99 (extended)',
'name' => 'view-name',
'children' => [],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' ),
bless( {
'content' => '',
'name' => 'charts',
'children' => [],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' )
],
'attrvals' => [],
'attrkeys' => []
}, 'NetAppApi::NaElement' );
Then I get an undefined error in response:
$VAR1 = bless( {
'content' => '',
'name' => 'results',
'children' => [],
'attrvals' => [
'',
'13001',
'failed'
],
'attrkeys' => [
'reason',
'errno',
'status'
]
}, 'NetAppApi::NaElement' );
So that is not a valid way to specify an empty element tag.
If I add a chart then my error just changes to the level below, the first named chart generates an error that there are no lines specified (again this should be optional).
So I don't think that the empty element tag <charts/> should be required, and enforced, by the filer. This is more than just a documentation issue. I guess I could work around it for now, but I will need to know how to add the empty element tag to the NaElement object. Is there an SDK method to do that?
Thanks,
Chris
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Chris,
It is a documentation error that I am working towards getting corrected. Charts is not optional. I have a work around for you :
I can see from your code that you add charts as a child to perf-view. You need to use child_add_string instead just like you need to for the view-name parameter.
Here is a working code :
___________________________________________________________________________
my $api = new NaElement('perf-view-create');
my $xi = new NaElement('view');
$api->child_add($xi);
my $xi1 = new NaElement('perf-view');
$xi->child_add($xi1);
$xi1->child_add_string('charts',' ');
$xi1->child_add_string('view-name','test');
$xi1->child_add_string('view-type','custom_view_instances');
$xi1->child_add_string('are-events-shown','false');
my $xo = $s->invoke_elem($api);
if ($xo->results_status() eq 'failed') {
print 'Error:\n';
print $xo->sprintf();
exit 1;
}
print 'Received:\n';
print $xo->sprintf();
__________________________________________________________________
This should work, Please let me know if it does.
____________________________________________
The XML :
<perf-view-create>
<view>
<perf-view>
<charts>
</charts>
<view-name>test</view-name>
<view-type>custom_view_instances</view-type>
<are-events-shown>false</are-events-shown>
</perf-view>
</view>
</perf-view-create>
_______________________________________________
