def Run(self, args):
        """See base class."""

        release_track = self.ReleaseTrack()
        client = osconfig_api_utils.GetClientInstance(
            release_track, api_version_override='v1beta')
        messages = osconfig_api_utils.GetClientMessages(
            release_track, api_version_override='v1beta')
        ops_agents_policy = agent_policy.CreateOpsAgentPolicy(
            args.description, args.agent_rules, args.group_labels,
            args.os_types, args.zones, args.instances)
        validator.ValidateOpsAgentsPolicy(ops_agents_policy)
        guest_policy = to_guest_policy.ConvertOpsAgentPolicyToGuestPolicy(
            messages, ops_agents_policy)
        project = properties.VALUES.core.project.GetOrFail()
        parent_path = osconfig_command_utils.GetProjectUriPath(project)
        request = messages.OsconfigProjectsGuestPoliciesCreateRequest(
            guestPolicy=guest_policy,
            guestPolicyId=args.POLICY_ID,
            parent=parent_path,
        )
        service = client.projects_guestPolicies
        complete_guest_policy = service.Create(request)
        ops_agents_policy = to_ops_agents.ConvertGuestPolicyToOpsAgentPolicy(
            complete_guest_policy)
        return ops_agents_policy
Ejemplo n.º 2
0
 def testConvertOpsAgentPolicyToGuestPolicyDebian(self):
     expected_guest_policy = self._CreateGuestPolicyAPT()
     ops_agents_policy = _CreateOpsAgentPolicy(
         'debian', LEGACY_OPS_AGENT_RULE_POLICY_AGENT_RULES)
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 3
0
 def testConvertOpsAgentPolicyToGuestPolicy_PreviousRecipe(self):
     expected_guest_policy = self._CreateGuestPolicyYUM()
     ops_agents_policy = _CreateOpsAgentPolicy(
         'centos', LEGACY_OPS_AGENT_RULE_POLICY_AGENT_RULES)
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy, expected_guest_policy.recipes)
     for recipe in expected_guest_policy.recipes:
         recipe.version = '1'
         recipe.name = recipe.name.replace('0', '1')
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 4
0
 def testConvertOpsAgentPolicyToGuestPolicy_AddNewRecipe(self):
     expected_guest_policy = self._CreateGuestPolicyYUM()
     ops_agents_policy = _CreateOpsAgentPolicy(
         'centos', LEGACY_OPS_AGENT_RULE_POLICY_AGENT_RULES)
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy,
         [expected_guest_policy.recipes[0]])
     expected_guest_policy.recipes[0].version = '1'
     expected_guest_policy.recipes[0].name = expected_guest_policy.recipes[
         0].name.replace('0', '1')
     expected_guest_policy.recipes[1].version = '0'
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 5
0
 def testConvertOpsAgentPolicyToGuestPolicyDebianLatest(self):
     expected_guest_policy = self._CreateGuestPolicyAPT(
         logging_version='latest',
         metrics_version='latest',
         logging_package_suffix='',
         metrics_package_suffix='')
     metrics_agent_latest = _CreateMetricsAgentRule(agent_version='latest')
     logging_agent_latest = _CreateLoggingAgentRule(agent_version='latest')
     ops_agents_policy = _CreateOpsAgentPolicy(
         'debian', [logging_agent_latest, metrics_agent_latest])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 6
0
 def testConvertOpsAgentPolicyToGuestPolicyDebianLegacy(self):
     expected_guest_policy = self._CreateGuestPolicyAPT(
         metrics_version='5.5.2-1000',
         metrics_enable_autoupgrade='false',
         metrics_desired_state='INSTALLED',
         metrics_package_suffix='=5.5.2-1000*')
     metrics_agent_latest = _CreateMetricsAgentRule(
         agent_version='5.5.2-1000', enable_autoupgrade=False)
     ops_agents_policy = _CreateOpsAgentPolicy(
         'debian', [_CreateLoggingAgentRule(), metrics_agent_latest])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 7
0
 def testConvertOpsAgentPolicyToGuestPolicyRhel(self):
     expected_guest_policy = self._CreateGuestPolicyYUM(
         logging_repo_suffix='-all', metrics_repo_suffix='-all')
     expected_guest_policy.assignment.osTypes[0].osShortName = 'rhel'
     expected_guest_policy.assignment.instances = [
         'zones/us-central1-a/instances/rhel7-0',
         'zones/us-central1-a/instances/rhel7-1',
     ]
     expected_guest_policy.assignment.osTypes[0].osVersion = '7.8'
     ops_agents_policy = _CreateOpsAgentPolicy(
         'rhel', LEGACY_OPS_AGENT_RULE_POLICY_AGENT_RULES)
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 8
0
 def testConvertOpsAgentPolicyToGuestPolicyIntalled(self):
     expected_guest_policy = self._CreateGuestPolicyYUM(
         logging_enable_autoupgrade='false',
         metrics_enable_autoupgrade='false',
         logging_desired_state='INSTALLED',
         metrics_desired_state='INSTALLED')
     metrics_agent = _CreateMetricsAgentRule(agent_version='6.0.0',
                                             enable_autoupgrade=False)
     logging_agent = _CreateLoggingAgentRule(agent_version='1.6.35',
                                             enable_autoupgrade=False)
     ops_agents_policy = _CreateOpsAgentPolicy(
         'centos', [logging_agent, metrics_agent])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 9
0
 def testConvertOpsAgentPolicyToGuestPolicySlesWildCard(self):
     expected_guest_policy = self._CreateGuestPolicyZypper(
         logging_version='1.*.*',
         metrics_version='6.*.*',
         logging_repo_suffix='-1',
         metrics_repo_suffix='-6',
         logging_package_suffix='<2.*',
         metrics_package_suffix='<7.*')
     metrics_agent = _CreateMetricsAgentRule(agent_version='6.*.*')
     logging_agent = _CreateLoggingAgentRule(agent_version='1.*.*')
     ops_agents_policy = _CreateOpsAgentPolicy(
         'sles', [logging_agent, metrics_agent])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 10
0
 def testConvertOpsAgentPolicyToGuestPolicyCentosCurrentMajor(self):
     expected_guest_policy = self._CreateGuestPolicyYUM(
         metrics_version='latest',
         logging_version='1.*.*',
         logging_repo_suffix='-1',
         metrics_package_suffix='',
         logging_package_suffix='-1.*')
     metrics_agent_latest = _CreateMetricsAgentRule(agent_version='latest')
     logging_agent_current_major = _CreateLoggingAgentRule(
         agent_version='current-major')
     ops_agents_policy = _CreateOpsAgentPolicy(
         'centos', [logging_agent_current_major, metrics_agent_latest])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self.assertEqual(
         expected_guest_policy, actual_guest_policy,
         'Expected guest policy:\n{}\nActual guest policy:\n{}'.format(
             expected_guest_policy, actual_guest_policy))
Ejemplo n.º 11
0
 def testConvertOpsAgentPolicyToGuestPolicyDebian_UnifiedAgent(self):
     expected_guest_policy = self._LoadMessage(
         UNIFIED_AGENT_APT_GUEST_POLICY_YAML.format(
             ops_agent_enable_autoupgrade='true',
             ops_agent_package_state='installed',
             ops_agent_version='1.0.0',
             ops_agent_desired_state='UPDATED',
             ops_agent_repo_suffix='-all',
             etag=ETAG,
             ops_agent_run_script=OPS_AGENT_RULE_RUN_SCRIPT.format(
                 repo_dir='/etc/apt/sources.list.d',
                 repo_name='google-cloud-ops-agent',
                 additional_install='',
                 cache_dir='/var/cache/apt',
                 package_name='google-cloud-ops-agent',
                 package_manager='apt-get',
                 package_suffix='=1.0.0-1*')), self.messages.GuestPolicy)
     ops_agents_policy = _CreateOpsAgentPolicy(
         'debian', OPS_AGENT_RULE_POLICY_AGENT_RULES)
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 12
0
 def testConvertOpsAgentPolicyToGuestPolicyRemoved(self):
     expected_guest_policy = self._LoadMessage(
         YUM_GUEST_POLICY_YAML.format(
             logging_enable_autoupgrade='false',
             logging_package_state='removed',
             logging_version='1.6.35',
             metrics_enable_autoupgrade='false',
             metrics_package_state='removed',
             metrics_version='6.0.0',
             logging_desired_state='REMOVED',
             metrics_desired_state='REMOVED',
             logging_repo_suffix='-all',
             metrics_repo_suffix='-all',
             etag=ETAG,
             logging_run_script=textwrap.dedent("""\
             #!/bin/bash
                     echo 'Skipping as the package state is [removed].'"""),
             metrics_run_script=textwrap.dedent("""\
             #!/bin/bash
                     echo 'Skipping as the package state is [removed].'""")
         ), self.messages.GuestPolicy)
     metrics_agent = _CreateMetricsAgentRule(
         agent_version='6.0.0',
         enable_autoupgrade=False,
         package_state=agent_policy.OpsAgentPolicy.AgentRule.PackageState.
         REMOVED)
     logging_agent = _CreateLoggingAgentRule(
         agent_version='1.6.35',
         enable_autoupgrade=False,
         package_state=agent_policy.OpsAgentPolicy.AgentRule.PackageState.
         REMOVED)
     ops_agents_policy = _CreateOpsAgentPolicy(
         'centos', [logging_agent, metrics_agent])
     actual_guest_policy = converter.ConvertOpsAgentPolicyToGuestPolicy(
         self.messages, ops_agents_policy)
     self._AssertProtoMessageEqual(expected_guest_policy,
                                   actual_guest_policy)
Ejemplo n.º 13
0
    def Run(self, args):
        """See base class."""
        release_track = self.ReleaseTrack()
        client = osconfig_api_utils.GetClientInstance(
            release_track, api_version_override='v1beta')
        messages = osconfig_api_utils.GetClientMessages(
            release_track, api_version_override='v1beta')

        project = properties.VALUES.core.project.GetOrFail()
        request = messages.OsconfigProjectsGuestPoliciesGetRequest(
            name=osconfig_command_utils.GetGuestPolicyUriPath(
                'projects', project, args.POLICY_ID))
        service = client.projects_guestPolicies
        current_guest_policy = service.Get(request)
        current_ops_agents_policy = guest_policy_to_ops_agents_policy_converter.ConvertGuestPolicyToOpsAgentPolicy(
            current_guest_policy)
        updated_ops_agents_policy = ops_agents_policy.UpdateOpsAgentsPolicy(
            current_ops_agents_policy, args.description, args.etag,
            args.agent_rules, args.os_types,
            [] if args.clear_group_labels else args.group_labels,
            [] if args.clear_zones else args.zones,
            [] if args.clear_instances else args.instances)
        ops_agents_policy_validator.ValidateOpsAgentsPolicy(
            updated_ops_agents_policy)
        updated_os_config_policy = ops_agents_policy_to_guest_policy_converter.ConvertOpsAgentPolicyToGuestPolicy(
            messages, updated_ops_agents_policy, current_guest_policy.recipes)
        request = messages.OsconfigProjectsGuestPoliciesPatchRequest(
            guestPolicy=updated_os_config_policy,
            name=osconfig_command_utils.GetGuestPolicyUriPath(
                'projects', project, args.POLICY_ID),
            updateMask=None,
        )
        complete_os_config_policy = service.Patch(request)
        complete_ops_agent_policy = guest_policy_to_ops_agents_policy_converter.ConvertGuestPolicyToOpsAgentPolicy(
            complete_os_config_policy)
        return complete_ops_agent_policy