public function ensureBackgroundWorkerIsCreated($integration_id)
 {
     $integration = Integration::find($integration_id);
     $integration->db_integration_id = $integration->id;
     $integrationJson = $integration->toJson();
     Queue::push('ReauthenticateAndRefreshNodeList', array('message' => $integrationJson));
 }
 public function list_nodes()
 {
     $success = false;
     $integration = Integration::find($this->db_integration_id);
     $nodes = [];
     try {
         $client = \Aws\Ec2\Ec2Client::factory(array('key' => $integration->authorization_field_1, 'secret' => $integration->authorization_field_2, 'region' => 'us-east-1'));
         $res = $client->DescribeInstances();
         $reservations = $res['Reservations'];
         $success = [];
         foreach ($reservations as $reservation) {
             $instances = $reservation['Instances'];
             foreach ($instances as $instance) {
                 $interfaces = [];
                 foreach ($instance['NetworkInterfaces'] as $network_interface) {
                     array_push($interfaces, $network_interface['MacAddress']);
                 }
                 // Find out if we're part of a cluster
                 $sp_cluster_id = null;
                 try {
                     foreach ($instance['Tags'] as $tag) {
                         if ($tag['Key'] == 'elasticbeanstalk:environment-id') {
                             $sp_cluster_id = $tag['Value'];
                         }
                     }
                 } catch (Exception $e) {
                 }
                 array_push($nodes, array('service_provider_status' => $instance['State']['Name'], 'service_provider_base_image_id' => $instance['ImageId'], 'service_provider_id' => $instance['InstanceId'], 'private_dns_name' => $instance['PrivateDnsName'], 'public_dns_name' => $instance['PublicDnsName'], 'network_interfaces' => $interfaces, 'service_provider_cluster_id' => $sp_cluster_id, 'node_count' => $integration->nodes->count()));
             }
         }
     } catch (Exception $exception) {
         $nodes = false;
     }
     return $nodes;
 }
 public function list_nodes($availability_zone_name, $availability_zone_friendly_name)
 {
     #$output = new Symfony\Component\Console\Output\ConsoleOutput();
     #$output->writeln($availability_zone_name);
     $success = false;
     $integration = Integration::find($this->db_integration_id);
     $nodes = [];
     $client = \Aws\Ec2\Ec2Client::factory(array('key' => $integration->authorization_field_1, 'secret' => $integration->authorization_field_2, 'region' => $availability_zone_name));
     $res = $client->DescribeInstances();
     $reservations = $res['Reservations'];
     $success = [];
     #$output->writeln(print_r($reservations));
     foreach ($reservations as $reservation) {
         $instances = $reservation['Instances'];
         foreach ($instances as $instance) {
             $platform = "Linux";
             if (isset($instance['Platform'])) {
                 $platform = ucfirst($instance['Platform']);
             }
             $interfaces = [];
             foreach ($instance['NetworkInterfaces'] as $network_interface) {
                 array_push($interfaces, $network_interface['MacAddress']);
             }
             // Find out if we're part of a cluster. This feature is being deprecated.
             $sp_cluster_id = null;
             try {
                 foreach ($instance['Tags'] as $tag) {
                     if ($tag['Key'] == 'elasticbeanstalk:environment-id') {
                         $sp_cluster_id = $tag['Value'];
                     }
                 }
             } catch (Exception $e) {
             }
             $all_ips = array();
             foreach ($instance['NetworkInterfaces'] as $ni) {
                 foreach ($ni['PrivateIpAddresses'] as $interface) {
                     array_push($all_ips, isset($interface['PrivateIpAddress']) ? $interface['PrivateIpAddress'] : null, isset($interface['Association']['PublicIp']) ? $interface['Association']['PublicIp'] : null);
                 }
             }
             array_push($nodes, array('service_provider_status' => $instance['State']['Name'], 'service_provider_base_image_id' => $instance['ImageId'], 'service_provider_id' => $instance['InstanceId'], 'private_dns_name' => $instance['PrivateDnsName'], 'public_dns_name' => $instance['PublicDnsName'], 'network_interfaces' => $interfaces, 'service_provider_cluster_id' => $sp_cluster_id, 'service_provider_ip_addresses' => $all_ips, 'availability_zone_friendly' => $availability_zone_friendly_name, 'availability_zone_name' => $availability_zone_name, 'platform' => $platform));
         }
     }
     return $nodes;
 }
Beispiel #4
0
    ?>
">
		<div class="uk-grid uk-grid-collapse nos-title-row">
	    <div class="uk-width-1-6">Patch Risk</div>
	    <div class="uk-width-1-6">Provider &amp; Platform</div>
			<div class="uk-width-1-6">Physical Location</div>
			<div class="uk-width-1-6">Base Image</div>
			<div class="uk-width-1-6">Host Name</div>
			<div class="uk-width-1-6">Classifications</div>
		</div>
	
	<?php 
    foreach ($page_data['managed_nodes'] as $node) {
        ?>
		<?php 
        $integration = Integration::find($node->integration_id);
        ?>
		<?php 
        $service_provider_cluster_id = empty($node->service_provider_cluster_id) ? 'None' : $node->service_provider_cluster_id;
        ?>
		<?php 
        $service_provider_description = $node->description == " " ? 'None' : $node->description;
        ?>
		<div class="uk-grid uk-grid-collapse nos-row nos-activatable" rel="<?php 
        echo $node->id;
        ?>
" class="<?php 
        echo $service_provider_cluster_id;
        ?>
">
			<div class="uk-width-1-6 node_status activatable">
 public function list_nodes($availability_zone_name, $availability_zone_friendly_name)
 {
     $output = new Symfony\Component\Console\Output\ConsoleOutput();
     $success = false;
     $integration = Integration::find($this->db_integration_id);
     $nodes = [];
     // We need to measure how often this actually matters. I wonder if UK_IDENTITY_ENDPOINT is only
     // for UK-based companies, or if it's needed to connect to Hong Kong.
     try {
         $client = new Rackspace(Rackspace::US_IDENTITY_ENDPOINT, array('username' => $integration->authorization_field_1, 'apiKey' => $integration->authorization_field_2));
     } catch (Exception $e) {
         $client = new Rackspace(Rackspace::UK_IDENTITY_ENDPOINT, array('username' => $integration->authorization_field_1, 'apiKey' => $integration->authorization_field_2));
     }
     $computeService = $client->computeService(null, $availability_zone_name, 'publicURL');
     $serverList = $computeService->serverList();
     foreach ($serverList as $server) {
         $server_ips = [];
         $private_dns = "";
         $public_dns = "";
         $server_status = "";
         if (strtolower($server->status) == "active") {
             foreach ($server->addresses->public as $ip) {
                 array_push($server_ips, $ip->addr);
             }
             foreach ($server->addresses->private as $ip) {
                 array_push($server_ips, $ip->addr);
             }
             $public_dns = null;
             foreach ($server->addresses->public as $pubdns) {
                 if (strlen($pubdns->addr) < 16) {
                     $public_dns = $pubdns->addr;
                 }
             }
             $private_dns = null;
             foreach ($server->addresses->private as $pdns) {
                 if (strlen($pubdns->addr) < 16) {
                     $private_dns = $pdns->addr;
                 }
             }
             $server_status = 'running';
         } else {
             switch (strtolower($server->status)) {
                 case "active":
                     $server_status = 'running';
                     break;
                 case "build":
                     $server_status = 'starting';
                     break;
                 default:
                     continue;
             }
         }
         // Get image info so we can get platform info
         $imageService = $client->imageService("cloudImages", $availability_zone_name);
         $imageInfo = $imageService->getImage($server->image->id);
         $platform = $imageInfo['os_type'];
         array_push($nodes, array('service_provider_status' => $server_status, 'service_provider_base_image_id' => $server->image->id, 'service_provider_id' => $server->id, 'private_dns_name' => $private_dns, 'public_dns_name' => $public_dns, 'network_interfaces' => [], 'service_provider_cluster_id' => null, 'service_provider_ip_addresses' => $server_ips, 'availability_zone_friendly' => $availability_zone_friendly_name, 'availability_zone_name' => $availability_zone_name, 'platform' => ucfirst($platform)));
     }
     // If nodes is empty, make attempt to list them through the legacy api.
     if (empty($nodes)) {
         $output->writeln("robby's account");
     }
     return $nodes;
 }