json( [ 'layout' => base64_decode( $source_json->layout ) ] );
}
/**
* Internal method used to generate a base64-encoded Gridster layout
*/
public function getEncodeLayout()
{
$layout = '[{"col":1,"row":1,"size_x":1,"size_y":1},{"col":1,"row":2,"size_x":1,"size_y":1},{"col":1,"row":3,"size_x":1,"size_y":1},{"col":2,"row":1,"size_x":2,"size_y":1},{"id":"bigGraph","col":2,"row":2,"size_x":2,"size_y":2},{"col":4,"row":1,"size_x":1,"size_y":1},{"col":4,"row":2,"size_x":2,"size_y":1},{"col":4,"row":3,"size_x":1,"size_y":1},{"col":5,"row":1,"size_x":1,"size_y":1},{"col":5,"row":3,"size_x":1,"size_y":1},{"col":6,"row":1,"size_x":1,"size_y":1},{"col":6,"row":2,"size_x":1,"size_y":2},{"id":"footerWidget","col":1,"row":4,"size_x":6,"size_y":1}]';
echo base64_encode( $layout );
}
/**
* Save the current layout to the JSON configuration file
*
* @return \Illuminate\Http\JsonResponse
*/
public function postSaveToJson()
{
$layout = base64_encode( $_POST[ '_serialized' ] );
$fullJson = json_encode( [ 'version' => '1.0', 'layout' => $layout ] );
$file = base_path() . '/config/dashboard.json';
file_put_contents( $file, $fullJson );
return response()->json( [ 'result' => 0 ] );
}
/**
* Return the dashboard to the default, before any changes are made
*
* @return \Illuminate\Http\JsonResponse
*/
public function postLoadDefault()
{
$layout = file_get_contents( base_path() . '/resources/install/dashboard-default.json' );
// [{"id":"c1r1","col":1,"row":1,"size_x":1,"size_y":1},{"id":"ec42","col":2,"row":1,"size_x":2,"size_y":1},{"id":"e419","col":4,"row":1,"size_x":1,"size_y":1},{"id":"527a","col":5,"row":1,"size_x":1,"size_y":1},{"id":"7d7d","col":6,"row":1,"size_x":1,"size_y":1},{"id":"e6f5","col":1,"row":2,"size_x":1,"size_y":1},{"id":"bigGraph","col":2,"row":2,"size_x":2,"size_y":2},{"id":"9eb2","col":4,"row":2,"size_x":2,"size_y":1},{"id":"d683","col":6,"row":2,"size_x":1,"size_y":2},{"id":"be8e","col":1,"row":3,"size_x":1,"size_y":1},{"id":"1adb","col":4,"row":3,"size_x":1,"size_y":1},{"id":"9035","col":5,"row":3,"size_x":1,"size_y":1},{"id": "footerWidget","col": 1,"row": 4,"size_x": 6,"size_y": 1}]
return response()->json( [ 'layout' => $layout ] );
}
public function postClusterInfo()
{
$parameters = [ 'username' => $_POST[ '_username' ], 'password' => $_POST[ '_password' ], 'cvmAddress' => $_POST[ '_cvmAddress' ], 'objectPath' => 'cluster' ];
$results = ( new ApiRequest( new ApiRequestParameters( $parameters ) ) )->doApiRequest( null, 'GET' );
return response()->json( [ 'results' => $results ] );
}
public function postVmInfo()
{
$parameters = [ 'username' => $_POST[ '_username' ], 'password' => $_POST[ '_password' ], 'cvmAddress' => $_POST[ '_cvmAddress' ], 'objectPath' => 'vms' ];
$vms = ( new ApiRequest( new ApiRequestParameters( $parameters ) ) )->doApiRequest();
$vmCount = $vms[ 'metadata' ][ 'grand_total_entities' ];
return response()->json( [ 'vmCount' => $vmCount ] );
}
public function postPhysicalInfo()
{
$parameters = [ 'username' => $_POST[ '_username' ], 'password' => $_POST[ '_password' ], 'cvmAddress' => $_POST[ '_cvmAddress' ], 'objectPath' => 'hosts' ];
$physical = ( new ApiRequest( new ApiRequestParameters( $parameters ) ) )->doApiRequest();
$hostCount = $physical[ 'metadata' ][ 'grand_total_entities' ];
$hostSerials = '';
foreach( $physical[ 'entities' ] as $host )
{
$hostSerials = $hostSerials . 'S/N ' . $host[ 'serial' ] . '
';
}
return response()->json( [ 'hostCount' => $hostCount, 'hostSerials' => $hostSerials ] );
}
public function postContainerInfo()
{
// sample request
// https://:9440/PrismGateway/services/rest/v1/containers/000525e7-9471-11ec-1830-d8cb8ac3e5bf::1585/stats/?metrics=controller_avg_io_latency_usecs&startTimeInUsecs=1450863555000000&endTimeInUsecs=1450867155000000&interval=30
$parameters = [ 'username' => $_POST[ '_username' ], 'password' => $_POST[ '_password' ], 'cvmAddress' => $_POST[ '_cvmAddress' ], 'objectPath' => 'storage_containers' ];
$containers = ( new ApiRequest( new ApiRequestParameters( $parameters ) ) )->doApiRequest();
$firstContainerId = $containers[ 'entities' ][ 0 ][ 'id' ];
$containerCount = $containers[ 'metadata' ][ 'grand_total_entities' ];
$parameters = [
'username' => $_POST[ '_username' ],
'password' => $_POST[ '_password' ],
'topLevelPath' => 'PrismGateway/services/rest/v1',
'objectPath' => 'containers',
'objectId' => $firstContainerId,
'objectSubPath' => 'stats',
'metric' => 'controller_avg_io_latency_usecs',
'cvmAddress' => $_POST[ '_cvmAddress' ],
'cvmPort' => '9440',
'connectionTimeout' => 3,
'method' => 'GET',
'startTime' => \Carbon\Carbon::now()->subHour(4),
'endTime' => \Carbon\Carbon::now(),
'interval' => 30
];
$results = ( new ApiRequest( new ApiRequestParameters( $parameters ) ) )->doApiRequest();
return response()->json( [ 'containerCount' => $containerCount, 'stats' => [ $results[ 'statsSpecificResponses' ][0][ 'values' ] ] ] );
}
}