6 Replies Latest reply: Jul 29, 2013 4:46 AM by aashray RSS

perf-view-create error 'charts not supplied'

chris_algar Sprinter
Currently Being Moderated

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.

chartsperf-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?

  • Re: perf-view-create error 'charts not supplied'
    chris_algar Sprinter
    Currently Being Moderated

    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

    • Re: perf-view-create error 'charts not supplied'
      adaikkap NetApp Employee Grand Marshal
      Currently Being Moderated

      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

      • Re: perf-view-create error 'charts not supplied'
        chris_algar Sprinter
        Currently Being Moderated

        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.

        • Re: perf-view-create error 'charts not supplied'
          adaikkap NetApp Employee Grand Marshal
          Currently Being Moderated

          Hi Chris,

               I spoke to one of the long timer of Performance Advisor on the same.

          1. The XML of <charts/> is correct. It is same as <charts>value</charts>
          2. Also the SDK documentation is incorrect. Charts is not a optional element.

           

          Regards

          adai

          • Re: perf-view-create error 'charts not supplied'
            chris_algar Sprinter
            Currently Being Moderated

            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

            • Re: perf-view-create error 'charts not supplied'
              aashray NetApp Employee Sprinter
              Currently Being Moderated

              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>

              _______________________________________________

More Like This

  • Retrieving data ...

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points